Unity без использования Update - PullRequest
       6

Unity без использования Update

0 голосов
/ 26 сентября 2019

В настоящее время я разрабатываю небольшую игру, в которой игроки должны угадывать.Игрок может дополнительно использовать специальные карты, которые, например, показывают одну букву / добавляют время, которое он / она имеет для угадывания и так далее.Игра разделена на две сцены -> одна с магазином, инвентарем, профилем игрока и т. Д., Вторая строго для гадания.В настоящее время почти все работает в обновлении во второй сцене, но я действительно ненавижу это.Я пытался переписать все в сопрограммы, НО проблема в том, что кажется невозможным использовать карты в IEnumerator (или, возможно, я делаю что-то не так?).Например, простой отсчет времени.Если это в обновлении, я могу легко влиять на время с помощью карт (например, добавить 30 секунд).В случае IEnumetor я не могу (или, может быть, лучше, я не знаю, как это сделать).

int secondsForGuess = 30;

 IEnumerator Countdown () {
     int counter = secondsForGuess;
     while (counter > 0) {
         yield return new WaitForSeconds (1);
         counter--;
     }
 }

Будем весьма благодарны за любые общие рекомендации, как это сделать без использования Update:D

1 Ответ

0 голосов
/ 26 сентября 2019

Если я правильно понимаю ваш вопрос, вы хотите иметь возможность увеличить счетчик вне рутины.Так что просто сделайте это поле в классе, чтобы любой мог увеличить или уменьшить его:

const int secondsForGuess = 30;
private int counter;

public void AddToCounter(int seconds)
{
    counter += seconds;
}

private IEnumerator Countdown () 
{
     counter = secondsForGuess;
     while (counter > 0) {
         yield return new WaitForSeconds (1);
         counter--;
     }

     // Do something when finsihed
 }

Также на всякий случай: убедитесь, что где-то запускаете подпрограмму, используя StartCoroutine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...