从输入字段获取文本仅在焦点更改后有效

Getting text from an input field only works after focus changes

我为我正在制作的一个简单游戏创建了一个暂停菜单。在那个暂停菜单中有一个字段可以输入您的用户名。我试图检查在允许用户关闭暂停菜单之前是否输入了用户名。但是,当焦点从输入字段移开时,input.textinput.TextComponent.text 值只会更改为键入的用户名。

我的代码如下:

public InputField input;
if ((string.IsNullOrEmpty (input.text)) || (input.text == "Enter Username")){
    input.textComponent.color = Color.red;
    input.text = "Enter Username";
} else {
    input.textComponent.color = Color.black;

    //hide pause menu and resume game
    canvas.gameObject.SetActive (false);
    Time.timeScale = 1;
}

此代码仅在用户在尝试关闭暂停菜单之前单击输入字段框以外的地方时才有效。我怎样才能得到输入的文本?

我试过在 if 语句之前添加 GUI.focusControl("")GUI.focusControl(null) 但这也不起作用。

编辑:

我已确认 if 语句的第二个参数有效。如果输入的文本是 "Enter Username",菜单不会关闭,所以我知道我正在正确检查文本变量。我只是不明白为什么 if 语句 returns 如果您输入其他任何内容则为真?我一定是遗漏了什么

GUI.focusControl("")GUI.focusControl(null)都与Unity的新UI系统(uGUI)无关。它们适用于 IMGUI.

如果你想关注InputField你可以使用下面的代码:

public InputField input;
input.ActivateInputField();
input.Select();

停止对焦

input.DeactivateInputField();

不要尝试投票InputField.text。那不是如何使用它。在这种情况下你有两个选择:

1。订阅 InputField onEndEdit 活动。

当玩家完成输入并点击 Enter/Return 或离开时,将调用此函数。然后您可以 check/compare 那里的用户名。 从 post.

检查 #3

2。添加一个显示 "check" 或 "submit" 的按钮。当用户完成输入时,他们将不得不单击该按钮。订阅按钮的 onClick 事件。当 Button 被点击时,您然后 check/compare 作为用户名。从 post.

检查 #2

如果您找到另一种棘手的方法来执行此操作,它会起作用,但不适用于 Android 设备。您最终将再次重写代码。