0

我在运行时在我的游戏中显示文本一秒钟时遇到问题,所以我想知道是否可以在运行时添加或删除 GUI 标签?

4

2 回答 2

2

你的意思是这样的吗?

void OnGUI() {
    if (textShouldBeShown) {
        GUI.Label(new Rect(10f, 10f, 100f, 50f), "MyText");
    }
}
于 2013-10-21T12:15:08.780 回答
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");
    }
}
于 2013-10-21T20:51:28.110 回答