Страница 1 из 1

Вызов дочернего StartCoroutine эквивалентен foreach?

СообщениеДобавлено: 05 фев 2017, 11:35
Albeoris
Доброго времени суток!
Подскажите - если развернуть дочернюю корутину в цикл, поведение не изменится? Или существуют подводные камни?
Задача - избавиться от базового MonoBehaviour.

Оригинал:
Синтаксис:
Используется csharp
yield return StartCoroutine(Update());

public IEnumerator Update()
{
  yield return base.StartCoroutine(Initialize1());
  yield return base.StartCoroutine(Initialize2());
}


Замена:
Синтаксис:
Используется csharp
yield return StartCoroutine(Update());

public IEnumerator Update()
{
  foreach (var state in Initialize1())
    yield return state;
  foreach (var state in Initialize2())
    yield return state;
}

Re: Дочернего StartCoroutine эквивалентент foreach?

СообщениеДобавлено: 27 фев 2017, 00:13
Albeoris
Ап. Вопрос всё ещё интересен.

Re: Вызов дочернего StartCoroutine эквивалентен foreach?

СообщениеДобавлено: 27 фев 2017, 12:05
~AvA~
Тебе чтобы вызывать StartCoroutine всё равно нужен MonoBehaviour, от чего именно ты хочешь избавиться?

Re: Вызов дочернего StartCoroutine эквивалентен foreach?

СообщениеДобавлено: 28 фев 2017, 09:12
Albeoris
Неудачно назвал метод.
Update, Initialize1 и Initialize2 не содержат какой-либо логики с завязками на MonoBehaviour. Вызываются явно из другого MonoBehaviour'а через вызов yield return StartCoroutine(someType.Update());
Вот этот самый "Update", который не имеет отношения к MonoBehaviour.Update и хочется развернуть без использования StartCoroutine, чтобы убрать из someType родителя.

Re: Вызов дочернего StartCoroutine эквивалентен foreach?

СообщениеДобавлено: 28 фев 2017, 12:06
~AvA~
Мм, я всё равно не понимаю пока проблему (туповат чуток, каюсь :) ).
Ка на счёт вот такого:
Синтаксис:
Используется csharp
public class Logic
{
   public void Update() {}
 }

Синтаксис:
Используется csharp
public void LogicWrapper : MonoBehaviour
{
   private Logic logic;

  void Awake()
  {
      logic = new Logic();
  }

  void Update()
  {
      logic.Update();
  }
}
 

Писал прям здесь, могут быть синтаксические ошибки