Search
Write a publication
Pull to refresh

Comments 4

У корутин есть еще одна болячка: она не может запустится в том MonoBehaviour, чей GameObject не активен и сразу падает с ошибкой, так что приходится проводить доп. проверку на activeInHierarchy

  1. Корутины можно остановить через StopCoroutine, имхо это даже проще токенов.

  2. На пример с "ECS" больно смотреть, написали бы лучше пример с заведомо async вещами, тот же http-запрос, потому что игровую логику тасками в ECS не пишут, но окей.

  3. Пример с ECS не раскрывает минуса корутин, свой глобальный CoroutineManager для сцены пишется за 5 минут. Я бы наоборот выделял привязку к объекту как возможный плюс, потому что таскаться с токенами, либо ловить нулрефы в повисших тасках не прикольно.

Корутины создают объекты в памяти, но Unity их кэширует (запоминает) для повторного использования. UniTask работает еще эффективнее и не создает лишних объектов.

Это не совсем правда, UniTask использует пулируемые промисы, так что по крайней мере при первом вызове, например, delay, будет выделение. Аналогично с раннерами стейт машин асинхронных методов.

А начиная с версии 2023.1, появился awaitable, так что целесообразность использования и корутин, и UniTask под вопросом

Забыли про основное корутины не умеют возращать

Sign up to leave a comment.

Articles