コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】プレハブモードになった時に Scene ビューの 2D カメラの位置やサイズを変更するエディタ拡張

概要

using Cysharp.Threading.Tasks;
using UnityEditor;
using UnityEditor.Experimental.SceneManagement;
using UnityEngine;

[InitializeOnLoad]
public static class Example
{
    static Example()
    {
        PrefabStage.prefabStageOpened += async stage =>
        {
            if ( !stage.assetPath.StartsWith( "Assets/Hoge/" ) ) return;

            await UniTask.NextFrame();

            var sceneView = SceneView.lastActiveSceneView;

            if ( sceneView == null ) return;

            // 初めて開くプレハブだと 1 フレーム待たないと
            // カメラの位置とサイズが反映されなかった
            await UniTask.NextFrame();

            sceneView.pivot = new Vector3( 0, -1.5f, 0 );
            sceneView.size  = 8;
            sceneView.Repaint();
        };
    }
}