как сделать правильную задержку?

Общие вопросы о Unity3D

как сделать правильную задержку?

Сообщение mepihin 13 авг 2013, 19:15

Вот мне надо сделать показ бокса на 2 секунды:
Синтаксис:
Используется csharp
public bool bonus;

public void OnGUI () {
if (bonus) {
Bonus b = GetComponent<Bonus>();
GUI.Box(new Rect(Screen.width/2-30,Screen.height/2-15,60,30),"+" + b.bonusSize.ToString());
Yields (2);
bonus = false;
}
}

IEnumerator Yields (float timer) {
                yield return new WaitForSeconds (timer);       
        }
 


Что не так? У меня вообще не показывается окно.
Аватара пользователя
mepihin
UNIверсал
 
Сообщения: 418
Зарегистрирован: 01 янв 2013, 20:58
Откуда: Россия - Москва
Skype: live:snukler

Re: как сделать правильную задержку?

Сообщение AppCode 13 авг 2013, 19:27

mepihin писал(а):Вот мне надо сделать показ бокса на 2 секунды:
Синтаксис:
Используется csharp
public bool bonus;

public void OnGUI () {
if (bonus) {
Bonus b = GetComponent<Bonus>();
GUI.Box(new Rect(Screen.width/2-30,Screen.height/2-15,60,30),"+" + b.bonusSize.ToString());
Yields (2);
bonus = false;
}
}

IEnumerator Yields (float timer) {
                yield return new WaitForSeconds (timer);       
        }
 


Что не так? У меня вообще не показывается окно.


и не будет, у тебя значение bonus всегда FALSE
AppCode
UNITрон
 
Сообщения: 172
Зарегистрирован: 03 июл 2013, 16:01
Откуда: Днепропетровск
Skype: appcode_

Re: как сделать правильную задержку?

Сообщение Woolf 13 авг 2013, 20:05

Синтаксис:
Используется csharp
IEnumerator Yields (float timer) {
                bonus=true;
                yield return new WaitForSeconds (timer);      
                bonus=false;
        }

public void OnGUI () {
if (bonus) {
  Bonus b = GetComponent<Bonus>();
   GUI.Box(new Rect(Screen.width/2-30,Screen.height/2-15,60,30),"+" + b.bonusSize.ToString());
    // startCaroutine ("Yields", "2"); - вызвать когда нужно показать бокс.
  }
}


А вообще, нафиг через карутину? Проще сделать через одну единственную переменную float

Синтаксис:
Используется csharp
float bonus;

public void OnGUI () {
if (bonus>0) {
  Bonus b = GetComponent<Bonus>();
   GUI.Box(new Rect(Screen.width/2-30,Screen.height/2-15,60,30),"+" + b.bonusSize.ToString());
  }
}

public void Update () {
 bonus-=Time.deltatime;
}


в нужный момент просто в бонус записать сколько секунд вам там надо, чтобы показывалось.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16