以下の内容はhttps://baba-s.hatenablog.com/entry/2025/03/06/103450より取得しました。


【Unity】Game ビューの解像度のインデックスを特定の範囲でのみ変更する構造体

ソースコード

#if UNITY_EDITOR

using System;
using System.Reflection;
using UnityEditor;

namespace Kogane
{
    public struct SetGameViewSelectedSizeIndexScope : IDisposable
    {
        private const BindingFlags BINDING_ATTRS = BindingFlags.Instance | BindingFlags.Public;

        private static readonly Type         GAME_VIEW_TYPE           = Type.GetType( "UnityEditor.GameView,UnityEditor" );
        private static readonly PropertyInfo SELECTED_SIZE_INDEX_INFO = GAME_VIEW_TYPE!.GetProperty( "selectedSizeIndex", BINDING_ATTRS );

        private readonly int m_oldSelectedSizeIndex;

        private bool m_isInitialized;

        public SetGameViewSelectedSizeIndexScope( int selectedSizeIndex )
        {
            var editorWindow = EditorWindow.GetWindow( GAME_VIEW_TYPE );

            m_oldSelectedSizeIndex = ( int )SELECTED_SIZE_INDEX_INFO!.GetValue( editorWindow );

            SELECTED_SIZE_INDEX_INFO.SetValue( editorWindow, selectedSizeIndex );

            m_isInitialized = true;
        }

        public SetGameViewSelectedSizeIndexScope
        (
            int selectedSizeIndex,
            int oldSelectedSizeIndex
        )
        {
            var editorWindow = EditorWindow.GetWindow( GAME_VIEW_TYPE );

            m_oldSelectedSizeIndex = oldSelectedSizeIndex;

            SELECTED_SIZE_INDEX_INFO!.SetValue( editorWindow, selectedSizeIndex );

            m_isInitialized = true;
        }

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

            var editorWindow = EditorWindow.GetWindow( GAME_VIEW_TYPE );

            SELECTED_SIZE_INDEX_INFO!.SetValue( editorWindow, m_oldSelectedSizeIndex );
        }
    }
}

#endif

参考サイト様




以上の内容はhttps://baba-s.hatenablog.com/entry/2025/03/06/103450より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14