Unity

1.

2.

Плюсы и минусы
Плюсы
- Минимальный порог вхождения
- Возможность быстрого
прототипирования и
масштабирования проекта
- Использование готовых решений
- Возможность разработки без
написания кода (на уровне
прототипов и простых механик)
- Высокоуровневое
программирование, на множество
моментов под капотом можно просто
не обращаться внимания, пока это не
будет заметно в работе билда.
- Быстрая кросс платформенная
сборка
Минусы
- Минимальный порог
вхождения и как следствие
большое количества проектов
с сомнительной архитектурой
- Слишком большая свобода
действий для разработчика в
коде
- Множество проблем в GPU /
CPU процессах
- Ручной контроль
использования оперативной
памяти в сложных проектах

3.

UNITY HUB
- Приложение работает как единая точка доступа до всех версий Unity
и их платформ.
- Крайне часто разработчики имеют дело со стабильной версией или
версией LTS (Long Term Support)
- Новые версии берутся в основном для ресерча и тестов новых фич.

4.

UNITY HUB
- Скачиваем и устанавливаем Unity Hub https://unity.com/unity-hub
- Регистрируемся на сайте Unity и авторизуемся в хабе

5.

Установка Unity
- Для проекта будем использовать рекомендованную LTS версию
Unity 2022.3.9

6.

Установка Unity
- Выставляем данные галочки и устанавливаем Unity. Как видите, в
добавок устанавливается IDE для работы с кодом.

7.

Установка Visual Studio
- После загрузки всех компонентов в Unity Hub, будет выполнена
установка, в ходе которой появится предложение докачать
компоненты Visual Studio и установить. Необходимо обязательно
выбрать указанный компонент.

8.

Обзор редактора Unity

9.

Cравнение Unity и Unreal Engine

10.

Scene
Scene — это уровень, который хранит в себе все необходимые
визуальные объекты, а также ту или иную логику написанную на
C#. Сцены могут служить отдельными локациями / экранами для
приложения.

11.

Game Object
Game Object — это
фундаментальный объект в
Unity. Game Object являются
контейнерами для скриптов и
встроенных компонентов Unity,
призванными решать те или
иные задачи.

12.

Hierarchy
Hierarchy — окно в котором
отображаются все (Игровые объекты)
Game Object находящиеся на сцене. В
последних версиях Unity может быть
загружено одновременно несколько
сцен и все они будут отображаться в
этом окне.

13.

Inspector
Inspector — вкладка в которой
отображаются все свойства
выбранного объекта (тэг, слой и
компоненты). Через инспектор
можно контролировать все его
параметры, а также
опрокидывать часть связей и
логики через поля в скриптах.

14.

Project
Project — вкладка, отображающее иерархию всех файлов в проекте.

15.

Шаблон введения проектов
Крайне важно cоблюдать понятную иерархию папок и скриптов в
проекте!
Это необходимо в первую очередь для того, чтобы другие
разработчики которые будут иметь дело с вашим проектом примерно понимали, где искать те или иные ресурсы / ассеты /
скрипты.
Самый простой тип иерархии - по категориям объектов.

16.

Console
Console — вкладка, в которой выводятся ошибки, предупреждения и
информационные сообщения. Можно настроить опцию остановки runtime
процесса, если будет получена хотя бы одна ошибка. («Error on pause»)

17.

Components
Компоненты определяют поведение
объектов в игре. Они - функциональная
часть каждого игрового объекта
(GameObject). Игровой объект является
контейнером для различных компонентов.
По умолчанию у всех игровых объектов
есть компонент Transform. Потому что
Transform диктует, где расположен
игровой объект, и как он поворачивается
и масштабируется. Без компонента
Transform, игровой объект не будет иметь
место в мире.

18.

Scripting
Поведение игровых объектов контролируется
с помощью компонентов, которые
присоединяются к ним.
Основной язык работы в Unity - C#
Несмотря на то, что встроенные компоненты
Unity могут быть очень разносторонними,
вскоре вы обнаружите, что вам нужно выйти
за пределы их возможностей, чтобы
реализовать ваши собственные особенности
геймплея.
Unity позволяет вам создавать свои
компоненты, используя скрипты. Они
позволяют активировать игровые события,
изменять параметры компонентов, и отвечать
на ввод пользователя каким вам угодно
способом. Скрипт взаимодействует с
внутренними механизмами Unity за счет
создания класса, наследованного от
встроенного класса, называемого
MonoBehaviour.

19.

Основные методы класса MonoBehaviour.
При создании скрипта в Unity автоматически генерируется 2 метода: Start и Update, но таких методов гораздо больше.
Полный их список можно найти в документации Unity. Мы же рассмотрим для начала основные методы:
-Awake – метод вызывается при инициализации компонента один раз до вызова метода Start. Вызывается даже тогда
когда скрипт не активен, то есть GameObject включен, но параметр enabled == false. Используется в основном для
инициализации полей и данных.
-OnEnable - метод вызывается после Awake, в момент когда Game Object включается. Метод может вызываться
повторно если выключить и включить объект снова. Вызывается до Start.
-Start – метод который вызывается один раз при активации скрипта. Вызывается после Awake, но перед отрисовкой
следующего кадра который появится после этого метода.
-Fixed Update – вызывается фиксированно через определенный промежуток времени. Используется в основном для
работы с физикой.
-Update – вызывается каждый кадр. Используется для реализации игровой логики. Что бы узнать время между
кадрами нужно обратиться к переменной Time.deltaTime. Работать с физикой в данном методе можно, но в таком
случае нужно выполнять домножение просчетов на Time.deltaTime.
-LateUpdate – вызывается каждый кадр, но вызывается после метода Update.
-OnDisable - метод вызывается в момент выключения объекта, перед цепочкой вызовов OnDestroy
-OnDestroy - метод который вызывается у либо на этапе удаления GameObject’a со сцены либо в момент выключения
сцены (при закрытии приложения или переходе на другую сцену)

20.

Unity Asset Store
Asset Store - официальный магазин Unity, где можно приобрести готовые модели,
эффекты, плагины и движки для Unity.
Есть широкий выбор как бесплатных так и платных ассетов для любых целей.
При этом не надо полагаться только на готовые решения, они не научат вас в полной мере
и не дадут полноценный опыт разработки.

21.

GIT, это система версионирования кода, призванная решить
следующие задачи:
- Возможность командной работы над одним проектом
- Сохранение актуальных состояний проекта на разных этапах
разработки. (Сделать бэкап, сохранить состояние последней
стабильной версии проекта и так далее)

22.

Основные объекты GIT системы
- Repository - корневое место на сервере, где хранится проект,
там же хранится вся история его зафиксированных состояний
(т.е. репозиторий это набор веток и коммитов в них)
- Branch - ветка, ответвление репозитория в котором хранится
набор действий относящихся к конкретной итерации работы
над продуктом. Принято распределять ветки на develop,
master, feature/NameFeature, release. Подробнее о ветках и их
порядке будет описано в разделе GitFlow.
- Tag - ярлык, это метка - обозначающая конкретную итерацию
продукта. Как правило тэги имеют оконченные итерации
продукта (Версия 1.0.0, Версия 1.1.0 и так далее)
- Group - группа (namespace), в котором может храниться N-ое
количество репозиториев

23.

Основные действия в GIT
системе
- Commit (коммит), действие содержащее изменения в проекте. В качестве
экономии ресурсов гит не фиксирует каждое состояние как полную копию
всех файлов проекта. Коммиты содержат в себе только изменения между
предыдущим зафиксированным состоянием проекта (коммитом) и новым
зафиксированным состоянием (коммитом). Такие изменения называются
«differences» разницей между состояниями.
- Push (отправка) изменений (одного или более коммитов) на сервер, он же
называется origin. То есть можно сделать изменение, но оставить его
только локально на машине, не отправляя изменения на сервер.
- Fetch (извлечение) обновление информации о репозитории с сервера.
- Pull (применение полученных через fetch) изменений c cервера (origin)
- Merge (слияние) слияние изменений из одной ветки в другую
Работая с гит мы всегда оперируем сначала с локальными изменениями,
которые находятся в копии репозитория, а затем уже заливаем изменения
на сервер (origin).

24.

Популярные GIT сервисы
Основными сервисами которые работают с системами гит
являются:
GitHub - сервис с большим уклоном под соц.сеть для
программистов. Есть бесплатная возможность создавать
приватные репозитории, учавствовать в других проектах.
GitLab - сервис с большим уклоном в Production часть, есть
свой таск менеджер. Возможность планирования релизов.
Kanban доски и так далее. Создание приватных репозиториев и
групп бесплатно, однако таск менеджер доступен бесплатно
лишь в базовом виде.
BitBucket - cервис с большей заточенностью под созданием
небольших команд с закрытым репозиторием. В бесплатной
версии есть лимит на количество человек в команде.

25.

Порядок авторизации
1 - Установка консоли Git Bush
2 - Генерация ключа .ssh
3 - Привязка .ssh ключа в gitlab аккаунте
4- Авторизация имени и почты в .git cистеме
(консоль)
5- Первый запрос на скачивание с сервера и
подтверждение через терминал (консоль)
6 - Клонирование репозитория
7- Дальнейшая работа в терминале или через
любой другой GUI клиент

26.

Установка GIT Bush

27.

Установка GIT Bush

28.

Установка GIT Bush

29.

Установка GIT Bush

30.

Создание ключа
Генерация ключа
•Открываем консоль.
•Вводим команду ssh-keygen -t rsa -C «your_email»
•Опционально нужно задать Passphrase пустым. Если не
вводить фразу, то в основном требуется лишь
•После того как ключ создан, нужно достать сгенерированный
.ssh
•Любой .ssh ключ состоит из приватного и публичного ключа.
•Для того чтобы связать аккаунт нам нужен публичный ключ
формата .pub
•При работе на ОС Windows, сгенерированные ключи лежит
по пути: C:\Users\”Имя компьютера”\.ssh (либо же
устанавливается вручную при генерации ключа)

31.

Генерация ключа
Пример генерации ключа. Если без заморочек, то от вас
требуется нажимать Enter и один раз ввести букву “y”(как
видно на скриншоте)

32.

• Заходим в аккаунт GitLab.
• Выбираем раздел Settings
• Открываем панель SSH Keys
• Заносим .ssh ключ в большое поле, если все верно - то в нижней панели
появится ваш e-mail.

33.

Авторизация в Git
Помимо привязки ключей, необходимо также быть
авторизованным по никнейму и почте в системе.
Это необходимо для того, чтобы при выполнении коммитов в
истории репозитория было видно кто сделал действие.
git config --global user.name "John Doe" $
git config --global user.email johndoe @example.com.

34.

Обзор команд через терминал
Операция по скачиванию (клонированию проекта из git)
git clone -b main [email protected]
-b (сокращенно branch - указываем какую ветку хотим
скачать)
[email protected] - адрес репозитория

35.

Обзор команд через терминал
Далее, чтобы работать с репозиторием через консоль
(после того как скачали) - нам необходимо перейти в
папку с репозиторием через операцию cd
Просто пишем cd (пробел) и копируем директорию папки
где лежит проект.
git fetch origin (получить изменения из сервера)
git add . (добавить все изменения для коммита)
git commit -m «Название сообщения» сформировать
запрос на отправку в гит с текущими файлами.
git push origin - отправить изменения на сервер
git pull origin - получить изменения в текущую ветку

36.

Создание нового репозитория
Репозиторий можно быстро создать в web версии git.
Порядок действий:
•Выбираем пункт New Project
•Выбираем название
•Выбираем область видимости проекта. На область видимости проекта также влияет
место размещения. Допустим если вы делаете проект публичным, но помещаете его в
закрытую группу - то проект будет принимать настройки доступа именно группы.
•Private (Проект доступен создателю. Доступ остальным выдается вручную)
•Internal (Проект будет доступен любого авторизованному пользователю)
•Public (Проект доступен из вне, через поисковики в том числе.)
•Cоздаем репозиторий.
•Первоначально у каждого репозитория нет веток. Рекомендуется выполнить первый
init коммит в веб версии, например создав файл Readme.md
•Также необходимо создать .gitignore файл

37.

Подтверждение авторизации через ключ
При первой попытке что-либо скачать из гита вам необходимо
подтвердить подключение по новому ключу через систему
fingerprint. Чтобы визуально понимать о чем идет речь, после
авторизации попробуйте склонировать репозиторий через
gitbash консоль (Windows).
При первой попытке получить данные из git по запрашиваемому
адресу консоль спросит у вас - уверены ли вы в том чтобы
привязать ключ .ssh к данному аккаунту. Просто нажмите enter или
напишите «yes».

38.

Установка GUI клиента GIT
- Скачиваем TortoiseGit: https://tortoisegit.org/download/
- Установка:
- По окончанию установки не снимаем обе галочки

39.

Настройка GUI клиента GIT
- Щелчком правой кнопкой мыши по любой папке откроет
контекстное меню с новыми вариантами. Выбираем
TortoiseGit => Settings
- Выбираем Network и в поле SSH должна быть ссылка на
exe файл, представленный ниже

40.

Git Ignore файл
- Позволяет фильтровать файлы, которые пойдут в индекс
- Не учитывает заданные вами файлы
Файлы и папки которые могут быть лишними в гите:
- Library папка
- Temp папка
- .vs и прочие солюшен файлы
Файл .gitignore автоматически позволяет гит клиенту игнорировать любые
файлы которые вы зададите.
GitLab и GitHub позволяют создать шаблонный .gitignore автоматически.
Мы рассмотрим более оптимизированный вариант .gitignore

41.

Пример
# Ignore everything
/*
/*/
# Inverse ignore some stuff
!/Assets/
!/ProjectSettings/
!/Packages/
!.gitignore
# OS Stuff
.DS_Store
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
$RECYCLE.BIN/
Desktop.ini

42.

Пример через шаблон

43.

Git Flow

44.

Git Flow
-Разработка всегда стартует с master ветки, даже
если она пустая.
-Каждый блок разработки следует выделить в
категорию (итерацию) и работать с ней отдельно в
отдельной ветке. Например feature/CharacterCreate
-Как только итерация готова, создается запрос на
слияние в develop

45.

Git Flow
-release ветка создается в разное время в разных
компаниях (везде свои условности)
-release создается на этапе, когда мы готовы
тестировать данную итерацию
-release также именуется более полным именем, с
указанием маркета, например release/GooglePlay-1.0.0
- Release сливается в последующем в master и в develop,
когда итерация будет опубликована на маркете.

46.

Git Flow
-HotFix также не имеет четких критериев и в разных
коммьюнити с ним работают по-разному.
-В нашем случае, HotFix создается либо когда надо
править что-либо на маркете и берется версия master
либо когда в рамках тестирования были найдены баги и
нам надо создавать такую ветку уже на основе release/
namePlatform и далее сливать все обратно в релиз.

47.

Merge Request
Merge Request, это запрос на слияние одной ветки в другую.
Запрос как правило означает то, что есть тот кто сделал
изменения - а есть тот, кто эти изменения должен проверить и в
случае чего пропустить в указанную ветку.

48.

Merge Request
Фактически, код ревью в gitlab происходит путем создания
Merge Request в веб версии gitlab и отправкой ссылки на Merge
Request проверяющему.

49.

Merge Request
Выбираем откуда брать изменения и куда сливать.
Source -> Target
English     Русский Правила