按返回按钮/转义将恢复输入字段中的文本

时间:2016-05-09 19:15:30

标签: unity3d

我在Unity 3D游戏中使用输入字段。当我在Windows 10 Mobile上输入文本,然后按后退按钮关闭键盘时,Unity认为我想清除输入字段。 documentation中甚至没有提到此行为,我也没有找到覆盖它的方法。我想这样做,这样用户就可以使用后退按钮来关闭键盘,而无需恢复输入字段。有什么建议?这只是Unity的一个错误吗?

2 个答案:

答案 0 :(得分:1)

KeyPressed功能无法覆盖。

我刚刚在我的函数中添加了侦听inputField的值更改的内容:

if (Input.GetKeyDown (KeyCode.Escape)) {
    return;
}

它完全符合要求:)

答案 1 :(得分:0)

您可以在此处查看InputField的源代码:https://bitbucket.org/Unity-Technologies/ui/src/0155c39e05ca5d7dcc97d9974256ef83bc122586/UnityEngine.UI/UI/Core/InputField.cs?at=5.2&fileviewer=file-view-default

显然,通过设计清除逃生区域。看看980 - 984行:

case KeyCode.Escape:
{
     m_WasCanceled = true;
     return EditState.Finish;
}

您可以尝试创建自己的InputField子类并覆盖函数

protected EditState KeyPressed(Event evt)

当然它并不是很干净,因为除了980 - 984行之外,你必须复制基本InputField在这个函数中所做的一切。