コガネブログ

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

【Unity】Game ビューの maximized を特定の範囲でのみ変更する構造体

ソースコード

#if UNITY_EDITOR

using System;
using UnityEditor;

namespace Kogane
{
    public struct SetGameViewMaximizedScope : IDisposable
    {
        private static readonly Type GAME_VIEW_TYPE =
            Type.GetType( "UnityEditor.GameView,UnityEditor" );

        private readonly bool m_oldMaximized;

        private bool m_isInitialized;

        public SetGameViewMaximizedScope( bool maximized )
        {
            var editorWindow = EditorWindow.GetWindow( GAME_VIEW_TYPE );

            m_oldMaximized = editorWindow.maximized;

            editorWindow.maximized = maximized;

            m_isInitialized = true;
        }

        public void Dispose()
        {
            if ( !m_isInitialized ) return;
            m_isInitialized = false;

            var editorWindow = EditorWindow.GetWindow( GAME_VIEW_TYPE );

            editorWindow.maximized = m_oldMaximized;
        }
    }
}

#endif