【发布时间】:2015-05-19 15:09:50
【问题描述】:
当我创建一个空的游戏对象,将包含以下代码的脚本附加到它,然后按播放时,我可以看到 UI 结果:
public class OnGUI_test : MonoBehaviour
{
void OnGUI ()
{
GUILayout.BeginArea(new Rect(10, 10, 100, 100));
GUILayout.Button("Click me!");
GUILayout.EndArea();
}
}
但是为什么当我尝试添加代码以检查按键时,以下内容没有运行?
public class OnGUI_test : MonoBehaviour
{
void OnGUI ()
{
if ( Input.GetKeyDown( KeyCode.Escape ) )
{
GUILayout.BeginArea(new Rect(10, 10, 100, 100));
GUILayout.Button("Click me");
GUILayout.EndArea();
}
}
}
我做错了什么以及如何纠正它以在按下 Esc 时看到按钮?
谢谢
【问题讨论】:
-
阅读文档:docs.unity3d.com/ScriptReference/Input.GetKeyDown.html
Input.GetKeyDown需要从Update函数中调用,并在每个新帧上重置。 -
它不需要“需要”从 Update 调用,以便像 GUI 事件一样“需要”从 OnGUI 调用,这是了解 KeyDown 事件后是否保持键的唯一方法在 OnGUI 中,要么在 KeyDown 和 KeyUp 事件期间缓存值,要么在每次 OnGUI 调用时使用 Input.GetKey。
标签: c# user-interface unity3d