c# - 团结 : Why can't I automatically select my input field?

标签 c# android input selection unity-ui

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

我想要它,以便玩家不必点击此输入字段即可输入内容。 然而,到目前为止我所有的尝试都失败了。


我目前有一个名为 HighScoreTemplate 的预制件。 该预制件有一个 UI 输入字段(用于名称)和 UI 文本对象(用于分数)。 它还有一个名为 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 中的键盘没有弹出,以便我无需先点击它就可以在字段中输入内容?

最佳答案

您尝试过使用协程吗?

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

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

关于c# - 团结 : Why can't I automatically select my input field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53937730/

相关文章:

android - Kotlin 使用 Gson 将 json 字符串转换为对象列表

java - 无法从照片中裁剪图像

Android Studio 0.8.14 无法解析符号 'Bundle'

java - 我对此文件输入/输出有错误。我有100个错误

c - SHA_DIGEST_LENGTH 未定义

c# - Github api 使用 octokit.net 获取按标签过滤的问题

c# - 设置安全性后使用C#访问elasticsearch

c# - 哪种数据包捕获格式更好?

c - 输入继续

c# - 访问 null 对象的属性时,是否有方便的语法返回 null 而不是异常