本日は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]を実行します。
以下の通り、シーンビューのカメラ設定が変更されました。