1- 设置TextField, PasswordField, TextArea控件为输入焦点:
在绘制控件前使用GUI.SetNextControlName函数设置下一个输入控件的控制名称。
在绘制控件后的OnGUI 函数内可通过GUI.FocusControl函数设置对应控件为焦点控件。
示例:
GUI.SetNextControlName("test_control");
GUI.TextField(new Rect(4, 4, 200, 16), "test");
GUI.FocusControl("test_control");
2- 设置TextField, PasswordField, TextArea之类的控件输入光标位置:
通过函数
TextEditor obj = GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl) as TextEditor;
获取当前键盘输入焦点的文字控制对象。
后可通过控制对象进行相关的控制,如通过SelectTextEnd()函数将光标移动到末尾等操作。
注意的是当使用FocusControl设置焦点后需在下一帧调用光标设置等操作,否则会出现部分操作失效的情况,具体原因跟Unity本身GUI绘制的机制有关。