我在运行时在游戏中显示文本一秒有问题,所以我想知道是否可以在运行时添加或删除GUI标签?
答案 0 :(得分:2)
你的意思是这样吗?
void OnGUI() {
if (textShouldBeShown) {
GUI.Label(new Rect(10f, 10f, 100f, 50f), "MyText");
}
}
答案 1 :(得分:1)
每个帧都会绘制GUI组件。 OnGUI()函数就像Update()函数一样,除了与Update()函数不同,可以在其中调用GUI组件。
您可以将OnGUI视为一个循环。它将按顺序调用在其中声明的GUI组件,然后每帧再次执行。因此,如果您挂钩到此循环并阻止某些组件在运行时被调用,那么下一帧将不会渲染这些组件。
以下是一组可以让您在指定时间内执行此操作的函数:
private bool guiIsOn = true;
private void TurnOffGUIInSeconds(int seconds)
{
StartCoroutine(_TurnOffGUIInSeconds(seconds));
}
private IEnumerator _TurnOffGUIInSeconds(int seconds)
{
yield return new WaitForSeconds(seconds);
guiIsOn = false;
}
void OnGUI()
{
if(guiIsOn)
{
GUI.Label(new Rect(5,5,5,5), "Label text");
}
}