※この記事のUnityのバージョンは5.3.5f1です
はじめに
EditorWindowを表示させるとき、最初からTextFieldにフォーカスをのせておきたい場合があります。
その方法を調べてみました。
OnGUIの中で EditorGUI.FocusTextInControl()
を呼ぶとTextFieldにフォーカスが乗るみたいです。
検証用ソースコード
TestWindow.cs
# if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
public class TestWindow : EditorWindow
{
const string NAME = "A";
string text = "ほげ";
int cnt = 0;
[MenuItem("Window/TestWindow")]
static void Open()
{
GetWindow<TestWindow>();
}
void OnGUI()
{
text = EditorGUILayout.TextField("Text 1", text);
GUI.SetNextControlName(NAME);
text = EditorGUILayout.TextField("Text 2", text);
text = EditorGUILayout.TextField("Text 3", text);
if (cnt == 0)
{
// TextFieldへフォーカスをのせる
EditorGUI.FocusTextInControl(NAME);
}
cnt++;
}
}
# endif //UNITY_EDITOR