【问题标题】:Unity: Why can't I automatically select my input field?Unity:为什么我不能自动选择我的输入字段?
【发布时间】:2018-12-26 22:15:40
【问题描述】:

我目前正在为 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 中的键盘没有弹出以便我可以输入字段而无需先点击它?

【问题讨论】:

    标签: c# android input selection unity-ui


    【解决方案1】:

    您是否尝试过使用协程?

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多