FAQ по Unity
Самые простые вещи и для самых маленьких, поэтому на статью не претендую. Со временем буду дописывать и обновлять.
Сцена, объекты и физические тела
Q: В юнити много типов проектов, с чего начать?
A: Чтобы не забивать себе мозги можно выбрать самые минималистичные: Built-in 2D и Built-in 3D для 2D и 3D соответственно. В них не будет практически ничего предустановленного.
A: Чтобы не забивать себе мозги можно выбрать самые минималистичные: Built-in 2D и Built-in 3D для 2D и 3D соответственно. В них не будет практически ничего предустановленного.
Q: Можно ли свободно перемещаться по сцене?
A: Если зажать ПКМ, включится режим перемещения на WASD (да, прям как в шутерах), изменением высоты на Q\M и ускорением с зажатым Shift
A: Если зажать ПКМ, включится режим перемещения на WASD (да, прям как в шутерах), изменением высоты на Q\M и ускорением с зажатым Shift
Q: Что общего у всех объектов на сцене?
A: Даже пустой игровой объект будет иметь компонент Transform, который определяет его положение, размер и поворот на сцене.
A: Даже пустой игровой объект будет иметь компонент Transform, который определяет его положение, размер и поворот на сцене.
Q: Какие объекты я могу создать на сцене?
A: Для простоты упомяну самое главное для знакомства:
Примитивы - различные трехмерные геометрические фигуры (куб, шар, цилиндр и т.д.)
Спрайты - проще говоря изображения, основной объект в 2D сценах
Камеры - наши “глаза” в игре, поэтому одна камера обязательно будет создана на сцене
Источники освещения - свет в игре
A: Для простоты упомяну самое главное для знакомства:
Примитивы - различные трехмерные геометрические фигуры (куб, шар, цилиндр и т.д.)
Спрайты - проще говоря изображения, основной объект в 2D сценах
Камеры - наши “глаза” в игре, поэтому одна камера обязательно будет создана на сцене
Источники освещения - свет в игре
Q: Создал примитив на сцене, но он белый, не могу изменить его цвет
A: По умолчанию на объекте нет материала, которому можно будет задать цвет
A: По умолчанию на объекте нет материала, которому можно будет задать цвет
Q: В моей 2D сцене одни спрайты перекрывают другие
A: Нужно устанавливать спрайтам Sorting Layers, которые нужно предварительно создать. Пример порядка таких слоев: Background, Units, Missiles, Effects
A: Нужно устанавливать спрайтам Sorting Layers, которые нужно предварительно создать. Пример порядка таких слоев: Background, Units, Missiles, Effects
Q: В моей 2D сцене свет не работает на спрайтах
A: Решается добавлением материала
A: Решается добавлением материала
Q: Я добавил Rigidbody на свой объект, но он не реагирует на столкновения \ проваливается под землю
A: На объект не добавлен коллайдер. Хотя, коллайдер по умолчанию добавлен в примитивах юнити, некоторые статьи лично меня вводили в замешательство, не упоминая коллайдер, но говоря о Rigidbody
A: На объект не добавлен коллайдер. Хотя, коллайдер по умолчанию добавлен в примитивах юнити, некоторые статьи лично меня вводили в замешательство, не упоминая коллайдер, но говоря о Rigidbody
Q: Я делаю 2D игру с видом сверху, добавил на объект Rigidbody2D, но он падает вниз
A: Нужно отключить гравитацию в Rigidbody2D (GravityScale установить в 0)
A: Нужно отключить гравитацию в Rigidbody2D (GravityScale установить в 0)
Q: Как сгруппировать объекты?
A: Сделать один объект дочерним для другого (перетащив на него в левом окне иерархии объектов сцены) или создать им общего родителя (можно использовать пустой объект)
A: Сделать один объект дочерним для другого (перетащив на него в левом окне иерархии объектов сцены) или создать им общего родителя (можно использовать пустой объект)
Q: Как создать префаб и зачем?
A: Можно перетащить объект в проводник снизу. После этого можно будет изменять префаб отдельно, добавляя к нему любые компоненты или редактируя его, дважды кликнув на него. Преимущество в том, что можно менять что-то в префабе, чтобы изменения отражались на всех его экземплярах на сцене
A: Можно перетащить объект в проводник снизу. После этого можно будет изменять префаб отдельно, добавляя к нему любые компоненты или редактируя его, дважды кликнув на него. Преимущество в том, что можно менять что-то в префабе, чтобы изменения отражались на всех его экземплярах на сцене
Скриптинг
Q: Как создать скрипт?
A: Через меню сверху в разделе C# или контекстное меню в проводнике и Create MonoBehaviour script. Это гарантирует создание C# класса, наследуемого от класса MonoBehaviour и с двумя пустыми методами: Start и Update.
A: Через меню сверху в разделе C# или контекстное меню в проводнике и Create MonoBehaviour script. Это гарантирует создание C# класса, наследуемого от класса MonoBehaviour и с двумя пустыми методами: Start и Update.
Q: Не могу добавить свой скрипт C# на объект
A: Класс должен быть унаследован от MonoBehaviour. При этом имя скрипта не имеет значение
A: Класс должен быть унаследован от MonoBehaviour. При этом имя скрипта не имеет значение
Q: В чем разница GameObject и gameObject?
A: GameObject - класс игровых объектов в Unity, gameObject - экземпляр именно того объекта, который содержит текущий скрипт
A: GameObject - класс игровых объектов в Unity, gameObject - экземпляр именно того объекта, который содержит текущий скрипт
Q: Как сделать, чтобы можно было установить параметры скрипта прямо на сцене, а не из кода?
A: Сделать параметр публичным или добавить ему атрибут SerializeField
A: Сделать параметр публичным или добавить ему атрибут SerializeField
Q: Как найти компонент?
A: gameObject.GetComponent<T>, где T - тип компонента, например - Rigidbody
A: gameObject.GetComponent<T>, где T - тип компонента, например - Rigidbody
Q: Как найти объект на сцене?
A: Например, так:
GameObject.Find - найти GameObject по имени
transform.Find - найти дочерний Transform
A: Например, так:
GameObject.Find - найти GameObject по имени
transform.Find - найти дочерний Transform
Q: В чем разница Start и Awake?
A: Awake вызывается до любых других методов и даже в том случае, если объект скрипта выключен. Start вызывается после Awake и OnEnable, если объект скрипта включен.
A: Awake вызывается до любых других методов и даже в том случае, если объект скрипта выключен. Start вызывается после Awake и OnEnable, если объект скрипта включен.
Q: В чем разница Update, FixedUpdate, LateUpdate?
A: Update вызывается каждый кадр. FixedUpdate используется для расчетов физики и вызывается реже при высокой частоте кадров. LateUpdate вызывается каждый кадр после выполнения Update.
A: Update вызывается каждый кадр. FixedUpdate используется для расчетов физики и вызывается реже при высокой частоте кадров. LateUpdate вызывается каждый кадр после выполнения Update.
Q: Объект двигается слишком быстро
A: Для обеспечения постоянной скорости вне зависимости от частоты кадров, движение в Update \ FixedUpdate умножается на Time.deltaTime \ Time.fixedDeltaTime соответственно
A: Для обеспечения постоянной скорости вне зависимости от частоты кадров, движение в Update \ FixedUpdate умножается на Time.deltaTime \ Time.fixedDeltaTime соответственно
Q: Я обращаюсь к камере через Camera.main в своем скрипте, камера на сцене есть, но я ловлю ошибки при запуске игры
A: В режиме проигрывателя Camera.main будет возвращать null. Можно задать камеру объекту напрямую через публичное поле типа Camera, куда нужно добавить камеру на сцене
A: В режиме проигрывателя Camera.main будет возвращать null. Можно задать камеру объекту напрямую через публичное поле типа Camera, куда нужно добавить камеру на сцене
Q: Я использую методы DrawLine \ DrawRay, но при запуске на сцене не видно отрезка \ луча
A: Убедитесь, что отображаются гизмо (в меню Gizmos сверху возле кнопок проигрывателя), и что рисование происходит в каждом кадре (например, в Update методе)
A: Убедитесь, что отображаются гизмо (в меню Gizmos сверху возле кнопок проигрывателя), и что рисование происходит в каждом кадре (например, в Update методе)