Понедельник, 25 Ноября 2024, 05:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как сделать задержку при выполнении скрипта
VasaGameDevДата: Пятница, 26 Февраля 2016, 18:59 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте! Как сделать задержку, то есть строка которая задерживает дальнейшее выполнение скрипта. yield WaitForSeconds(1) мне не подходит, так как это не работает в Update.
berilДата: Пятница, 26 Февраля 2016, 19:07 | Сообщение # 2
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Что то мне подсказыввает, что ты не правильно используешь yield WaitForSeconds(1).... код в студию



Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
VasaGameDevДата: Пятница, 26 Февраля 2016, 19:18 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Впервые встретился с задержкой, ну вот пример которой мне бы хотелось реализовать

Код

void Update () {
  Debug.Log("123");
  yield WaitForSeconds(1);
  Debug.Log("OK");
                //еще какие-нибудь действия

    }
XakepДата: Пятница, 26 Февраля 2016, 19:29 | Сообщение # 4
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата VasaGameDev ()
yield WaitForSeconds(1);

Может надо так:
Код
yield return new WaitForSeconds(1);

http://docs.unity3d.com/ScriptReference/WaitForSeconds.html
VasaGameDevДата: Пятница, 26 Февраля 2016, 19:33 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Не помогло, ошибку пишет
berilДата: Пятница, 26 Февраля 2016, 19:36 | Сообщение # 6
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Код

void Update()
{
StartCoroutine(Example());
}

IEnumerator Example() {
        Debug.Log("123");
        yield return new WaitForSeconds(1);
        Debug.Log("OK");              
    }
    


Наверно не лучший способ использовать короутины в Update() можно или простой таймер или InvokeRepeating в зависимости, что ты хочешь там делать




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
VostruginДата: Пятница, 26 Февраля 2016, 20:05 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Без использования короутины.
Код

float StartDelay = 5f;
float Delay = 5f;

void Start()
{
this.Delay = this.StartDelay;
}

void Update()
{
this.Delay -= Time.deltaTime;
if(this.Delay > 0) return;
Debug.Log("Tick!");
this.RefreshDelay()
}

void RefreshDelay() {
this.Delay = this.StartDelay;
}
    




AntrixДата: Пятница, 26 Февраля 2016, 20:59 | Сообщение # 8
почетный гость
Сейчас нет на сайте
А чем плоха короутина? Мне для справки.
VostruginДата: Пятница, 26 Февраля 2016, 21:50 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Antrix, по-моему ничем. Просто тс просил показать реализацию задержки без применения оной.



berilДата: Суббота, 27 Февраля 2016, 11:33 | Сообщение # 10
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата Antrix ()
А чем плоха короутина? Мне для справки.

If you launch a coroutine via StartCoroutine(), you implicitly allocate both an instance of Unity's Coroutine class (21 Bytes on my system) and an Enumerator (16 Bytes). Importantly, no allocation occurs when the coroutine yield's or resumes, so all you have to do to avoid a memory leak is to limit calls to StartCoroutine() while the game is running.




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг