Как использовать циклы в апдейте
https://giannisakritidis.com/blog/Looping-Inside-Update/
Короткий ответ — не использовать циклы в апдейте XD Вообще чаще всего если вы считаете, что вам нужен цикл в апдейте, он вам не нужен. Особенно такой, который может что-то там зафризить. Перебор 10 элементов не в счет. Но тем не менее в статье неплохой разбор разных техник с эвейтерами, с корутинами, с индексами, как проходить цикл за несколько кадров, чтобы геймплей не фризился. И иногда это полезно, а знать об этих способах тем более.
Я не видел только моего любимого, но он подходит не для всего. Когда у меня стало слишком много задач с парсингом конфигов, или с расчётами сложных математических алгоритмов (один из моих любимых проектов был связан с укладкой графа в трёхмерном пространстве). Я полюбил паттерн DirtyFlag. Выносишь тяжеловесные расчеты, которые не зависят от UnityEngine неймспейса в отдельный поток, а потом после окончания помечаешь, что расчёт окончен — обнови визуализацию. Очень удобно.
Бесит иногда только, что приходится писать прокси-структуры, так как юнити мне кажется переборщили с защитой от дурака в плане многопоточности, и не дают юзать в другом потоке некоторые классы, с которыми я даже понять не могу в чём может быть в теории проблема. Была бы галочка unsafe multithreading, я был бы рад. Где «заблокировал поток, ну сам дурак, ты расписался тут галочкой, что понимаешь что делаешь и почему PhysX нельзя вызывать вне мейн треда» :)
#новости
Post #1211
1.92K