🗒️

[Unity] EditorWindow で TextField と同じ幅のボタンを配置する

2024/09/28に公開

目的

下図のように EditorWindow においてウィンドウサイズを変えても EditorGUILayout.TextField() 等と同じ幅となるボタンを配置することを目的とする。


環境

Unity 2022.3.6f1
他のバージョンで動くかは未確認である。

方法

以下のように実装することで実現できる。
なお、ObjectField, TextField は比較用である。

public class MyWindow : EditorWindow
{
    void OnGUI()
    {
        // ObjectField
        DefaultAsset asset = null;
        asset = EditorGUILayout.ObjectField("DefaultAsset", asset,
            typeof(DefaultAsset), false) as DefaultAsset;

        // TextField
        string text = "";
        text = EditorGUILayout.TextField("TextField", text);

        // Button
        Rect rect = EditorGUILayout.GetControlRect(true);
        rect = EditorGUI.PrefixLabel(rect, new GUIContent("Label"));
        if (GUI.Button(rect, "Button"))
        {
            // Do something
        }
    }
}

謝辞

私がこれをやろうとして方法が分からず困っていたところに教えてくれた anatawa さんにこの場を借りて感謝申し上げます。
https://misskey.niri.la/notes/9ypic4wc5t

Discussion