我正在使用 C# 学习 Unity 并学习 GUI 按钮。我在 Unity 文档中找到了以下语句:
“这意味着您的 OnGUI 实现可能每帧调用多次(每个事件调用一次)。”
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void OnGUI() {
if (GUI.Button(new Rect(10, 10, 150, 100), "I am a button"))
print("You clicked the button!");
}
}
我的问题是:
1) 上面的“if”语句会一直检测条件直到它为真。它应该被称为轮询输入。为什么上面的代码使用轮询输入而不是事件驱动输入?(即当有人按下按钮时,该事件被触发。)。尽管如果条件为假,if 语句将不执行任何操作,但与事件驱动输入相比,它一直在检测并且效率不高。
2) 为什么 Unity 在这种情况下使用轮询输入?
3)上述声明提到“每个事件一个呼叫”。这是否意味着它实际上是事件驱动输入,而不是轮询输入?
我对这些问题感到困惑,找不到答案。有人可以给我解释一下。谢谢。