1_Объекты и компоненты
Урок 1 : Объекты и компоненты
Работа с GameObject, компонентами и системой Transform. Практика закрепляет создание иерархии объектов, управление позицией и вращением, а также написание extension-методов для компонентов.
Теория
- Что такое GameObject в Unity? Как можно взаимодействовать с ним через код? Назовите основные методы (Создать, включить, выключить, уничтожить) и свойства.
- Что такое иерархия объектов? Как быстро найти на сцене объект, который выбран в окне Hierarchy?
- Что такое child и parent объекты?
- Какие есть виды примитивов трёхмерных объектов?
- Что такое Component и MonoBehaviour в Unity? Как получить или добавить компонент через код?
- Как из MonoBehaviour получить объект, на котором он установлен?
- Что такое Transform Component? Перечислите три его основных свойства и типы данных, связанные с этими свойствами.
- Какими методами можно менять позицию и вращение объекта через Transform?
- Как расположены оси системы координат (X, Y, Z) и куда они смотрят по умолчанию?
- Чем локальные координаты отличаются от глобальных и как их переключать?
- Почему вычисления, связанные с физикой и движением, следует помещать в
FixedUpdate(), а не вUpdate()? - Какие есть способы найти объект на сцене?
Практика
Создайте новую сцену для выполнения заданий. Организуйте иерархию объектов по смыслу.
Задания
Создайте новую сцену. Сделайте иерархию объектов с несколькими глобальными хранилищами объектов (пустые объекты). Назовите их UI, LOGIC, ENVIRONMENT, DYNAMIC.
Добавьте в ENVIRONMENT стены, положите их в Walls. И пол из нескольких Plane разной формы, его положите в Floor.
Создайте объект, который будет равномерно вращаться.
Создайте объект, который циклично перемещается в заданную позицию и обратно.
Задайте позицию для движущегося объекта через Transform и подвигайте трансформ цели во время игры.
** Создайте статический класс ComponentsExtension, содержащий методы:
GetOrAddComponent- возвращает компонент, добавляет его, если отсутствует.TryGetComponentInChildren- возвращаетboolи компонент черезout, если он есть на child объектах.SetName- меняет имя объекта.
Пример сигнатуры метода: public static T GetOrAddComponent<T>(this GameObject go) where T : Component
* Создайте объект, который циклично движется по нескольким заданным точкам и начинает вращаться после достижения последней точки в первый раз. Сделайте вращение через добавление компонента.