時代に翻弄されるエンジニアのブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら書きたいと思います。

Etiror 拡張 OnInspectorGUI で横幅を取得する方法

f:id:tkymx83:20210614111350p:plain

取得メソッド

EditorGUIUtility の currentViewWidth の返却値に幅が格納されています。

docs.unity3d.com

サンプルコード

例えば変数に値を入れ込むケースを考えてみたいと思います。変数の名前は固定長で表示をし、設定する値の編集箇所は可変長にしたい場合は以下のように記載します。

固定長の箇所は GUILayout.Width(100)
可変長の箇所は GUILayout.Width(width - 100 - 50)
のように指定するイメージです

[CustomEditor(typeof(BindParameter))]
public class BindParameterCustom : Editor
{
    private int index = 0;

    public override void OnInspectorGUI()
    {
        var bindParameter = target as BindParameter;
        var option = new string[]
        {
            "a","b", "c"
        };

        var width = EditorGUIUtility.currentViewWidth;

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Class Name", GUILayout.Width(100));
        index = EditorGUILayout.Popup(index, option, GUILayout.Width(width - 100 - 50));
        bindParameter.ClassName = option[index];
        EditorGUILayout.EndHorizontal();
    }
}

f:id:tkymx83:20210614110648p:plain