Советы новичкам Unity (разработка игр)
Все ниже описанное является моим личным опытом геймдева и осваивания движка Unity и не обязательно к применению. Однако вполне может стать своего рода Best Practice для новичков (а может и другим пригодится).
1) Update ()
Метод Update показан чуть ли не во всех официальных уроках по Unity. Однако в скором времени вы поймете, что не стоит пихать его во все скрипты. Альтернативой является применение необходимых изменений путем вызова их из другого объекта (сценария) по событию.
Пример: чтобы обновлять полоску жизни персонажа, не обязательно на слайдер вешать Update() который будет постоянно брать нужное ему значение и присваивать слайдеру. Достаточно вызвать событие изменения жизней персонажа которое и изменит полоску жизни.
Почему так: если у вас будет 1 монетка которая в методе Update() проверяет не подобрали ли ее, то посмотрите на производительность игры если у вас на экране будет 1000 таких монет. Про большое количество объектов расскажу ниже.
2) Стандартные ассеты
Смело импортируйте в свой проект стандартные ассеты и шерстите их. Там очень много всего полезного. Вот почему:
Изначально попробовав разобраться со стандартными способами управления персонажа, я подумал, что они слишком сложны для простых действий. И как результат – долго и упорно писал свой контроллер для персонажа. Однако в конечном счете столкнулся с тем, что мой контролер не работал на мобильных платформах (а я делал кроссплатформенный проект).
В общем в результате я потратил время и все-таки разобрался в стандартных ассетах управления и понял, что они очень хорошо и удобно написаны. Более того – они кроссплатформенные и работают на всех устройствах. После этого смело удалил все что я сделал в этой части и заменил на стандартные средства – радости моей не было предела.
Другая история касательно этого же – перерыл весь интернет и написал свой контролер для камеры. Камера следовала за персонажем, но плавно, и не двигалась в случае небольших движений игрока или его прыжков, а также не выходила за рамки уровня. А потом нашел скрипт в стандартных ассетах который делал тоже самое… (CameraFollow)
3) Частицы
Частицы — это не только дым, взрывы, мех и один, а то и два килограмма диетического мяса :)
В некоторых уроках я видел, как пули/ракеты/фаерболы делали путем инициализации (клонирования из префаба) объекта, который сам по себе двигался.
Т.е. на деле это так: GameObject игрока генерирует другие GameObject’ы которые имеют свой коллайдер и кучу скриптов на них. А теперь представьте сколько GameObject’ов будет у вас если игрок будет стрелять этими ракетами из пулемета? В общем заменяйте по возможности любые подобные объекты на частицы (а если вы стреляете – то лучше RayCast’ы). В версии Unity 5.3.1 (вроде бы) появились 2D коллизии частиц.
4) Кнопки и интерфейс
Стандартные компоненты GUI очень удобны в использовании – используйте их, и нечего тут говорить больше.
4) Плагины, примочки к Unity, стороннее ПО
Если что-то можно сделать с помощью Unity – делайте, и даже не вздумайте загадить свой проект плагинами и подобными вещами.
Пример: Использовал плагин для создания уровней по принципу Tile Map, в конечном счете ужаснулся, когда увидел сколько мусора у меня в проекте появилось и как жутко выглядит готовый результат (множество блоков и у каждого свой коллайдер). Ну и далее и вовсе решил уйти от принципа Tile Map. А еще позже увидел, что данный механизм планируется к появлению в ближайшей версии Unity (Очень жду).
5) Сначала прототипы, потом красота
Сам я до сих пор следую обратным путем, хотя и знаю, что это не совсем верно. Но вот мой личный опыт – после установки плагина для Tile Map уровней, я бросился рисовать огромное количество спрайтов, из которых должен был собираться уровень. Ну как я решил потом поступить с идеей использования Tile Map вы уже знаете, а результатом стала огромная трата времени и море не нужных более спрайтов для уровня.
6) Вибрация мобильного устройства, акселерометр, индикаторы и т.д.
Все гораздо проще чем вы думаете, в справке по Unity все это хорошо описано. Ищите HandHeld, Input.acceleration
7) Обязательно смотрите официальные Best Practice по Unity
Например, от туда я узнал много интересных способов упрощения анимации персонажей, а так же про кнопку «back» на Android устройствах (в приложениях она распознается как Input.GetKeyDown(KeyCode.Escape) )
8) События в анимациях
В менеджере анимаций есть кнопка
На которую можно повесить метод из привязанных к объекту скриптов. (например, чтобы синхронизировать анимацию выстрела, непосредственно с самим выстрелом)
Ну в общем вроде пока все, если будет интересно, то сделаю еще один подобный пост.
P.S. Сразу извиняюсь, если что то сказал не верно или не понятно – я не так давно знаком с Unity. Я скорее больше просто программист. Цель была помочь новичкам
P.P.S Если нужно про что то более подробно расписать – то смело спрашивайте, расскажу в следующем посте. В этом посте не стал все подробно расписывать потому что получился бы очень длинный пост.








