Войти
ПрограммированиеФорумОбщее

UNITY Как генерить переменную каждую секунду, а не каждый кадр??? (2 стр)

Страницы: 1 2
#15
13:38, 16 авг. 2017

Dampire
> seaman
> Кек. А потом - ЧОЙТА ЮНИТИ ТАК ТОРМОЗИТ
Я так понимаю - Вы о себе написали.
Для начала почитайте https://blogs.unity3d.com/ru/2015/12/23/1k-update-calls/
а потом подумайте - а так ли хорошо таймеры в апдейте делать.
Ну и вообще - думайте прежде сем писать...


#16
13:39, 16 авг. 2017

foxes
> Ты уверен что в месте использования корунтина точно также каждый кадр ни чего
> не считается?
Считается. И что?

#17
14:12, 16 авг. 2017

seaman
> Для начала почитайте https://blogs.unity3d.com/ru/2015/12/23/1k-update-calls/
Это к корунтинам ни как не относиться и проблему эту корунтины не решают.

проблема большого количества вызовов Update и подобных функций решаеться путем уменьшения калл стека, но это ни как не уменьшает объем работ по вызову альтернативной функции. И путь этот как раз - "фу костыль написанный альтернативно одаренными", вызываемый через тот же самый Update.

seaman
> Считается. И что?
Это ты сам скажи что:
seaman
> Вот лажа-ж. Ну зачем каждый кадр считать что-то?
#18
15:49, 16 авг. 2017

seaman
Еще раз лол. Почитал, и что? У ОПа уже есть Update метод. При чем тут таймер в апдейт? А ты знаешь как работают корутины?

#19
18:45, 17 авг. 2017

ronniko
> Понедельник-Пятница с 9.00 до 18.00. Перерыв с 13.00 до 14.00.
сцуко

Изображение
#20
8:32, 18 авг. 2017

RayCastHit
Во-первых что значит генерить переменную ?
Нормальные люди понимают под этим "Создать инстанс переменной" и для этого используется рефлекшн. Гуглить Activator.CreateInstance.
Но, судя по всему, твой альтернативно-одаренный мозг хотел спросить про генерацию значения переменной через заданный период времени.
Допустим твой заданный период времени это Period, а переменная с выходным значенем Val. Для этого есть несколько способов:
1. https://docs.unity3d.com/Manual/Coroutines.html . Внутри тела корутина присваиваешь новое рандомное значение
IEnumerator DoGenerate() {
  Val = Random.Value;
        yield return new WaitForSeconds(Period);
    }
}

2.  https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html
void Start()
    {
        InvokeRepeating("DoGenerate", Period,Period);
    }

    void DoGenerate()
    {
        Val = Random.Value;
    }

3. В update сам контролируешь сколько времени прошло после последней генерёжки. Это назыается "завести таймер". См. ответ Токарн
4. можно создать объект, который в Start  будет генерить значение и прибиваться с делеем. Peri

    void Start()
    {
Val = Random.Value;
Destroy(this, Period);
}

void OnDestroy() {
        // create new such object here
    }
5. Можно создать твинер с лупом, у которого на OnComplete будет DoGenerate
6. Написать скедулер и зарегать там событие DoGenerate на каждый Period

На вскидку больше ничего не придумать

Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.