Наткнулся на просторах тг на канал с "топ-лайфхаками по Unity" и пара из них меня прям возбудила с утра, внимание:
Вредный совет №1
"Используйте анонимные делегаты Action и Func вместо кастомных, это же гораздо проще"
Ага, проще...
Предположим, нашему игроку нанесли урон и это событие надо передать всем заинтересованным: вьюшке игрока, какой-нибудь аналитике, звук и vfx проиграть и тд. Для этого, допустим, надо передать айдишник противника, нанесенный урон по хп и урон по броне.
В оригинальном подходе от маэстро у нас получится событие:
Action<int,int,int>
- выглядит удобно?😂
Или все таки гораздо проще сделать свой делегат с понятным неймингом?
public delegate void Hit(int assaulter, int healthDamage, int armorDamage);
В общем, совет на уровне "ходите под себя, это проще чем вытирать жопу"...
НО! Я не говорю использовать ТОЛЬКО кастомные делегаты. А призываю следить за контекстом - если вам нужно передать много данных в событии, а особенно однотипных, то гораздо удобнее свой делегат, чем каждый раз лезть в первоисточник события и проверять, что вы нужный int правильно интерпретируете.
Вредный совет №2
Используйте ScriptableObject для передачи событий между сценами
Тут тоже понятно, откуда ноги растут. Знамения говностатья любимых юнитеков про ScriptableObject Architecture.
Коротко ее основной посыл:
"если вы только научились ходить и не умеет связывать классы между собой даже через синглтон, то используйте SO - закидайте проект монобехами, а данные, события и все что приглянется, киньте в SO и прокиньте через инспектор"
И самый мой любимый подводный камень - ScriptableObject в редакторе изменяется между сессиями! Поэтому если у вас все данные хранятся в SO, то будьте любезны потом пробежаться по проекту и затереть все изменения.
И я бы не доебался, но в оригинальном после это представлено как
лайфхаки, которые отличают джуна от мидла
это шаг в сторону масштабируемого и профессионального кода
Но я бы назвал это
лайфхаки, которые обезьяну от неандертальца
это шаг в кучу говна
На этом все, буду ждать новых лайфхаков, автор обещает:
впереди про архитектуру, DI, UI-системы и async паттерны
А тем временем чтобы научиться нормально программировать, а не на уровне пещерного человека, то:
1️⃣ Можете посмотреть мой список bad practice
2️⃣ Менторство с 0 до мидла
#техничка
