Abz*_*zax 4 c# unity-game-engine unity5
我必须双击“返回”键才能提交值!它在 2 小时前工作正常(我只需要按回车一次),但后来我重新启动了 Unity,现在我需要双击“回车”才能提交值。
更新 #2
我有一个脚本附加到包含输入字段的画布。代码如下:-
public class Example: MonoBehaviour {
public InputField inputField;
void Start () {
}
void Update () {
HandleUserInput ();
}
void HandleUserInput()
{
if (inputField.isFocused && inputField.text != "" && (Input.GetKey (KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter))) {
Debug.Log ("Pressed");
//Do stuff
inputField.text = ""; //Clear Inputfield text
inputField.ActivateInputField(); //Re-focus on the input field
inputField.Select ();//Re-focus on the input field
}
}
Run Code Online (Sandbox Code Playgroud)
当我播放场景并在字段中输入并按第一个返回时,日志不会显示任何内容,但是当我再次按下它时它会显示“已按下”。
更新 #3
我找到了某种解决方案,如果我删除“inputField.isFocused”输入字段将检测到第一个“返回”键。但是,在我的情况下,如果输入字段中有一些文本,那么用户单击场景中的任何其他地方然后按 Enter,输入字段将提交它。
请指教
无需手动执行此操作。您需要使用事件系统来注册和接收来自InputField. 注册以使用InputField提交事件InputField.onEndEdit,以在InputField. 您还可以使用inputField.onValueChanged来检查输入何时更改。您可以null在回调函数中执行检查:
public class Example: MonoBehaviour
{
public InputField inputField;
void Start()
{
}
void Update()
{
}
//Called when Input changes
private void inputSubmitCallBack()
{
Debug.Log("Input Submitted");
inputField.text = ""; //Clear Inputfield text
inputField.ActivateInputField(); //Re-focus on the input field
inputField.Select();//Re-focus on the input field
}
//Called when Input is submitted
private void inputChangedCallBack()
{
Debug.Log("Input Changed");
}
void OnEnable()
{
//Register InputField Events
inputField.onEndEdit.AddListener(delegate { inputSubmitCallBack(); });
inputField.onValueChanged.AddListener(delegate { inputChangedCallBack(); });
}
void OnDisable()
{
//Un-Register InputField Events
inputField.onEndEdit.RemoveAllListeners();
inputField.onValueChanged.RemoveAllListeners();
}
}
Run Code Online (Sandbox Code Playgroud)