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