Unity:为什么我不能自动选择输入字段?

时间:2018-12-26 22:15:40

标签: c# android input selection unity-ui

我目前正在为Android开发Highscore系统。 我有一个输入字段,玩家将在其中输入他们的姓名。

我想要它,以便播放器不必点击此输入字段即可输入。 但是,到目前为止,我的所有尝试都失败了。


我目前有一个名为 HighScoreTemplate 的预制件。 该预制件具有UI输入字段(用于名称)和UI Text对象(用于乐谱)。 它还有一个名为 HighScoreTemplate.cs 的脚本。

我在 HighScoreTemplate.cs 脚本中创建了 Select()函数,该函数将在输入字段上调用 .Select()然后 .ActivateInputField()

public void Select()
{
    // Select it
    NameField.Select();
    NameField.ActivateInputField();
}

但是,这不是自动选择NameField输入字段,因为键盘没有弹出了我的Android设备。

我已经通过调试验证了此Select()函数 被调用并运行。

我还验证了此输入字段是可交互的,选择该复选框后,我可以在检查器中看到它的复选框。


然后我以为Unity可能会有延迟,所以我尝试进行此测试以查看其是否有效:

int counter = 1;
while(counter <= 50 && !_newHighScoreTemplate.NameField.isFocused)
{
    _newHighScoreTemplate.Select();
    Debug.Log("Select Attempt #" + counter);
    counter++;
}

此测试给了我相同的结果,android键盘没有弹出,并且允许我在输入字段中输入文本。


有人可以告诉我我在做什么错吗? 为什么我的输入字段没有获得焦点,为什么Android的键盘没有弹出,这样我可以键入该字段而不必先点击它?

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用协程?

void OnEnable()
{        
    StartCoroutine(SelectInputField());
}

IEnumerator SelectInputField()
{
    yield return new WaitForEndOfFrame();
    NameField.ActivateInputField();
}