/// <summary> /// Корутина опроса перехода /// </summary> /// <param name="transition">Опрашиваемый переход</param> /// <returns></returns> protected IEnumerator TransitionPolling(ConditionalTransition transition) { // Установим время ожидания, равное указанному периоду var wait = new WaitForSeconds(transition.period); // Пока не выполнилось условие перехода do { // Ожидаем yield return(wait); }while (!transition.condition()); // Если условие перехода выполнилось, то устанавливаем результат работы состояния - название следующего состояния SetStateResult(transition.nextState); }
/// <summary> /// Установка опроса перехода /// </summary> /// <param name="transition">Переход, для которого устанавливается опрос</param> protected void SetConditionalTransitionPoll(ConditionalTransition transition) { Coroutine cor = _stateMachine.HandlingScript.StartCoroutine(TransitionPolling(transition)); _transitionsPolls.Add(cor); }