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

Программирование на Юнити.

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

Сообщение Albeoris 05 фев 2017, 11:35

Доброго времени суток!
Подскажите - если развернуть дочернюю корутину в цикл, поведение не изменится? Или существуют подводные камни?
Задача - избавиться от базового 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;
}
Последний раз редактировалось Albeoris 27 фев 2017, 00:14, всего редактировалось 2 раз(а).
Albeoris
UNIт
 
Сообщения: 146
Зарегистрирован: 19 окт 2013, 13:12

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

Сообщение Albeoris 27 фев 2017, 00:13

Ап. Вопрос всё ещё интересен.
Albeoris
UNIт
 
Сообщения: 146
Зарегистрирован: 19 окт 2013, 13:12

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

Сообщение ~AvA~ 27 фев 2017, 12:05

Тебе чтобы вызывать StartCoroutine всё равно нужен MonoBehaviour, от чего именно ты хочешь избавиться?
Аватара пользователя
~AvA~
UNIверсал
 
Сообщения: 396
Зарегистрирован: 17 фев 2015, 13:09

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

Сообщение Albeoris 28 фев 2017, 09:12

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

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

Сообщение ~AvA~ 28 фев 2017, 12:06

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

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

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

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

Писал прям здесь, могут быть синтаксические ошибки
Аватара пользователя
~AvA~
UNIверсал
 
Сообщения: 396
Зарегистрирован: 17 фев 2015, 13:09


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6