MRが楽しい

MRやVRについて学習したことを書き残す

シーンビューのカメラ設定をスクリプトから初期化する

本日はUnityの小ネタ枠です。
シーンビューのカメラ設定をスクリプトから初期化する方法についてです。

SceneView.CameraSettings

スクリプトからシーンビューのカメラ設定を変更するには SceneView.CameraSettings を利用します。
任意の変更内容のSceneView.CameraSettingsを作成して SceneView.lastActiveSceneView.cameraSettings に設定を反映します。
docs.unity3d.com
docs.unity3d.com

// カメラ設定を作成する
SceneView.CameraSettings settings = new SceneView.CameraSettings();
settings.accelerationEnabled = false;
settings.speedMin = 1f;
settings.speedMax = 10f;
settings.speed = 5f;
settings.easingEnabled = true;
settings.easingDuration = 0.6f;
settings.dynamicClip = false;
settings.fieldOfView = 120f;
settings.nearClip = 0.01f;
settings.farClip = 1000f;
settings.occlusionCulling = true;

// 現在のシーンビューのカメラに設定を反映する
SceneView sceneView = SceneView.lastActiveSceneView;
sceneView.cameraSettings = settings;

サンプルスクリプト

メニューから[MenuItemTest -> ResetSceneCameraSetting]を実行すると、シーンビューのカメラ設定を初期化するサンプルスクリプトを作成しました。

using UnityEditor;
using UnityEngine;

public class SceneViewCameraTest : MonoBehaviour
{
    /// <summary>
    /// メニューから MenuItemTest -> ResetSceneCameraSetting を選択して処理を実行する
    /// </summary>
    [MenuItem("MenuItemTest/ResetSceneCameraSetting %#c")]
    private static void ResetSceneCameraSettingTest()
    {
        SceneView.CameraSettings settings = new SceneView.CameraSettings();
        settings.accelerationEnabled = false;
        settings.speedMin = 0.01f;
        settings.speedMax = 2f;
        settings.speed = 1f;
        settings.easingEnabled = true;
        settings.easingDuration = 0.6f;
        settings.dynamicClip = true;
        settings.fieldOfView = 60f;
        settings.occlusionCulling = false;
        SceneView sceneView = SceneView.lastActiveSceneView;
        sceneView.cameraSettings = settings;
    }
}

メニューから[MenuItemTest -> ResetSceneCameraSetting]を実行します。

以下の通り、シーンビューのカメラ設定が変更されました。