(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]



EditorWindowの最小最大サイズや現在のサイズの取得と設定の方法【Unity】【エディタ拡張】


このエントリーをはてなブックマークに追加



この記事でのバージョン
Unity 2019.4.3f1


はじめに

今回はUnityのエディタ拡張でウィンドウを作成する際に使うEditorWindow

最大最小サイズや現在のサイズを取得したり設定したりする方法の紹介です!


イメージとしては以下のような感じ。

f:id:kan_kikuchi:20200716064248g:plain



最小、最大サイズ

EditorWindowの最小最大サイズはそのままminSizeとmaxSizeで設定&取得が出来ます。

using UnityEditor;

/// <summary>
/// EditorWindowのサンプルクラス
/// </summary>
public class EditorWindowSample : EditorWindow {
  //=================================================================================
  //初期化
  //=================================================================================

  //メニューからウィンドウを表示
  [MenuItem("Tools/Open/Editor Window Sample")]
  public static void Open (){
    EditorWindowSample.GetWindow (typeof(EditorWindowSample));
  }
  
  //=================================================================================
  //表示するGUIの設定
  //=================================================================================

  private void OnGUI() {
    //最小最大サイズの設定
    minSize = EditorGUILayout.Vector2Field("最小サイズ", minSize);
    maxSize = EditorGUILayout.Vector2Field("最大サイズ", maxSize);
  }
  
}
f:id:kan_kikuchi:20200714065527g:plain



現在のサイズ

EditorWindowの現在のサイズはpositionのsizeで取得出来ます。

//現在のサイズ表示
EditorGUILayout.LabelField($"現在のサイズ : {position.size}");
f:id:kan_kikuchi:20200714070138g:plain


なお、設定をする際は一旦position(Rect)を取得して

そのsizeを変更後、再度positionに入力する感じになります。

//現在のサイズ設定
var currentPosition = position;
currentPosition.size = EditorGUILayout.Vector2Field("現在のサイズ", currentPosition.size);
position = currentPosition;

/*以下のようにするとエラー*/
//position.size = EditorGUILayout.Vector2Field("現在のサイズ", position.size);
f:id:kan_kikuchi:20200716062826g:plain