如何在运行时以统一的方式添加gui文本

时间:2013-10-21 07:19:33

标签: unity3d unityscript

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

2 个答案:

答案 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");
    }
}