从焦点更改后,只能从输入字段获取文本

时间:2017-01-22 12:21:54

标签: c# unity3d unity5

我为我正在制作的简单游戏创建了一个暂停菜单。在该暂停菜单中,有一个字段用于输入您的用户名。我试图在允许用户关闭暂停菜单之前检查是否输入了用户名。但是,当焦点从输入字段更改时,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语句的第二个参数正在运行。如果输入的文本是“输入用户名”,菜单不会关闭,所以我知道我正确检查文本变量。我只是不明白为什么如果你输入其他东西if语句返回true?我一定错过了什么

1 个答案:

答案 0 :(得分:1)

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或离开时,将调用此功能。然后,您可以检查/比较那里的用户名。 检查this帖子中的#3

2 。添加一个显示“检查”或“提交”的按钮。用户完成输入后,必须单击该按钮。订阅按钮onClick事件。单击Button后,检查/比较那里的用户名。检查this帖子中的#2

如果您发现另一种棘手的方法,它会起作用,但不适用于Android设备。您将最终重新编写代码。