Coroutine не запускается со второй попытки? - PullRequest
0 голосов
/ 11 мая 2018

В настоящее время у меня есть этот процесс в моей функции OnGUI:

void OnGUI ()
{
   // process here that adds item on list
    Counter = list.Count();
}

У меня есть этот код, который запускает функцию при изменении значения счетчика.

private IEnumerator coroutine = null;
private int counter = 0;
private int limit = 5;
public int Counter 
{
    get{ return this.counter; }
    set
    {
         this.counter =  value;
         if(this.counter == limit)
         { 
             if(this.coroutine != null){ return; } // already running
             this.coroutine = StartProcess();
             StartCoroutine(this.coroutine); }
    }
}

StartProcess содержит это:

StartProcess ()
{
  yield return StartCorotuine (Process1);
  yield return StartCorotuine (Process2);
}

При первом запуске все работает гладко, но при втором запуске кажется, что моя функция «Счетчик» больше не работает, даже если мое условие выполнено?

1 Ответ

0 голосов
/ 11 мая 2018

Когда сопрограмма заканчивает, указатель на нее все еще действителен, она не сбрасывается в ноль, вы получаете обработчик для мертвой сопрограммы, просто добавьте = null в конце, и у вас все будет в порядке

...