Как добавить текст графического интерфейса во время выполнения в единстве

У меня проблема с отображением текста во время выполнения в моей игре в течение секунды, поэтому я хочу знать, возможно ли добавить или удалить метку графического интерфейса для просмотра во время выполнения?


person Akari    schedule 21.10.2013    source источник
comment
Конечно да. Либо звони, либо нет.   -  person Bart    schedule 21.10.2013
comment
Ну, как вы теперь отображаете свой текст? Если это простой вызов GUI.Label, просто не вызывайте его, если вы не хотите, чтобы он отображался.   -  person Bart    schedule 21.10.2013


Ответы (2)


Компоненты 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");
    }
}
person MichaelTaylor3D    schedule 21.10.2013

Вы имеете в виду что-то вроде этого?

void OnGUI() {
    if (textShouldBeShown) {
        GUI.Label(new Rect(10f, 10f, 100f, 50f), "MyText");
    }
}
person Lokkij    schedule 21.10.2013