Zefirot
@Zefirot

Как лучше менять интервал с изменением?

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

private float RegenerationSpeed = 2f;
void Start(){   
  InvokeRepeating("Regeneration", 0f, RegenerationSpeed);
  }
private void CellRegeneration(){
  ++Counter;
  }
private void SetRegeneration(float r){
  RegenerationSpeed = r;
  }

И вот мне нужно чтобы при изменении значения менялась и скорость выполнения
советовали просто к Update += Time.deltaTime привязать, мол если префабы одного типа то и считаться будет ондинаково
либо тоже самое но через FixUpdate

или как лучше сделать?
Суть - у всех объектов раз в 2 секунды прибавляется счётчик, но получая бонусы этот счётчик может прибавлять допустим на 20% быстрее или наоборот медленнее, таким образом нужно менять скорость динамически по ходу...
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
@Mixer1111
Я бы советовал делать всё с таймером не на инвоке, а на IEnumerator'е, там всё наглядней некуда:
IEnumerator test() //Создаёшь новый IEnumerator
{
  //Внутри можешь писать код как в обычном методе
  yield return new WaitForSeconds(<секунды>); //Ждёт нужное количество секунд
}


Таким образом всё ещё проще и понятнее на мой взгляд
А там дальше создаёшь переменную с секундами для ожидания, и прибавляешь в зависимости от чего либо ифами, ну или просто так. Только вот нужно в IEnumerator'е хотя бы одно ожидание сделать, или будет вылетать исключение
UPD: забыл сказать, что вызвать её нужно не как функцию, хоть по сути функцией и является, а так:
StartCoroutine(test(/*Ну и аргументы, если нужно*/));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы