- •Основы Unity
- •Обозреватель проекта
- •Поиск по Asset Store
- •Клавиши быстрого доступа
- •Иерархия
- •Окно Scene
- •Навигация в окне Scene
- •Позиционирование игровых объектов.
- •Инструмент Rect Tool
- •Панель управления окна Scene View
- •Инспектор
- •Префабы
- •Customizing Your Workspace (Настройка рабочего пространства)
- •Asset Workflow (работа с ассетами)
- •Создание ассета
- •Обновление ассетов
- •Создание сцен
- •Инстанциирование префабов
- •Добавление компонентов и скриптов
- •Размещение GameObject’ов
- •Работа с камерами
- •Источники света
- •Публикация сборок
- •Потоковая загрузка в веб-плеере
- •Автономное развёртывание веб-плеера
- •Сборка standalone плееров
- •В недрах процесса сборки
- •Предварительная загрузка (далее - прелоадинг)
- •Вы готовы собирать игры
- •Сочетания клавиш Unity
- •Preferences (Настройки редактора)
- •General (Основные)
- •External Tools (Внешние инструменты)
- •Colors (Цвета)
- •Keys (Клавиши)
- •Cache Server (Кэш сервер)
- •Взаимосвязь между GameObject’ом и компонентом
- •Компонент Transform
- •Другие компоненты
- •Использование компонентов
- •Добавление компонентов
- •Редактирование компонентов
- •Взаимоотношения компонента и скрипта
- •Отключение Игровых Объектов (GameObjects)
- •Результат отключения родителя Игрового Объекта
- •Едактирование свойств
- •Значения
- •Градиенты
- •Массивы
- •Редактирование нескольких объектов одновременно
- •Библиотеки предустановок
- •Как создать предустановку цвета:
- •Настройки инспектора
- •Блокировка
- •Режимы Нормальный/Отладка
- •Сочетания клавиш, которые можно использовать без инструмента Hand
- •Режим полета
- •Гизмо сцены
- •Жесты в Mac на трекпаде
- •Позиционирование игровых объектов
- •Перемещение, вращение и масштабирование
- •Переключатели отображения гизмо
- •Поиск в сцене
- •Поиск по проекту и метки
- •Префабы (Prefabs)
- •Использование префабов
- •Редактирование префаба из его экземпляров
- •Источники света
- •Способы рендеринга
- •Больше информации
- •Создание геймплея.
- •Создание экземпляров префабов во время работы приложения
- •Общие сценарии
- •Построение стены
- •Создание экземпляров ракет и взрывов
- •Замена персонажа на Ragdoll или обломки
- •Размещение группы объектов по заданному шаблону
- •Традиционный игровой ввод
- •Добавление новых осей ввода
- •Использование осей ввода из скриптов
- •Названия кнопок
- •Ввод на мобильном устройстве
- •Симуляция Мыши
- •Акселерометр
- •Фильтр низких частот
- •Я хочу получить как можно более точные показания акселерометра. Что я должен делать?
- •Предварительный просмотр текста
- •Видимость и размер клавиатуры
- •Наследование
- •Проблемы производительности и ограничения неравномерного (Non-Uniform) масштабирования
- •Важность масштаба
- •Подсказки по работе с компонентами Transform
- •Геймплей в 2d
- •2D Графика
- •2D Физика
- •Добавление случайных элементов в игру
- •Выбор случайного элемента в массиве
- •Выбор элементов с разной вероятностью
- •Перемешивание списка
- •Выбор элементов из набора без повторений
- •Случайные точки в пространстве
- •Некоторые из моих объектов не отбрасывют или на них не падают тени
Размещение группы объектов по заданному шаблону
Допустим вы хотите поместить группу объектов по сетке или кругу. Как всегда, это может быть выполнено двумя способами:
Сборка объекта полностью из кода. Это утомительно! Ввод значений из скрипта и медленный и не интуитивный, и не стоит затраченных усилий.
Сделать полностью готовый объект, дублировать его и несколько раз разместить его на сцене. Это опять же утомительно, а размещать объекты точно по сетке достаточно сложно.
Так используйте вместо этого Instantiate() с префабом! Мы думаем, что вы уже поняли нашу идею, почему префабы так удобны в этих случаях. Вот необходимый для этих сценариев код:
// JavaScript
// Instantiates a prefab in a circle
var prefab : GameObject;
var numberOfObjects = 20;
var radius = 5;
function Start () {
for (var i = 0; i < numberOfObjects; i++) {
var angle = i * Mathf.PI * 2 / numberOfObjects;
var pos = Vector3 (Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius;
Instantiate(prefab, pos, Quaternion.identity);
}
}
// C#
// Instantiates a prefab in a circle
public GameObject prefab;
public int numberOfObjects = 20;
public float radius = 5f;
void Start() {
for (int i = 0; i < numberOfObjects; i++) {
float angle = i * Mathf.PI * 2 / numberOfObjects;
Vector3 pos = new Vector3(Mathf.Cos(angle), 0, Mathf.Sin(angle)) * radius;
Instantiate(prefab, pos, Quaternion.identity);
}
}
// JavaScript
// Instantiates a prefab in a grid
var prefab : GameObject;
var gridX = 5;
var gridY = 5;
var spacing = 2.0;
function Start () {
for (var y = 0; y < gridY; y++) {
for (var x=0;x<gridX;x++) {
var pos = Vector3 (x, 0, y) * spacing;
Instantiate(prefab, pos, Quaternion.identity);
}
}
}
// C#
// Instantiates a prefab in a grid
public GameObject prefab;
public float gridX = 5f;
public float gridY = 5f;
public float spacing = 2f;
void Start() {
for (int y = 0; y < gridY; y++) {
for (int x = 0; x < gridX; x++) {
Vector3 pos = new Vector3(x, 0, y) * spacing;
Instantiate(prefab, pos, Quaternion.identity);
}
}
}
Ввод
Unity поддерживает как устройства ввода используемые играми (клавиатура, джойстик и т.д.), так и и сенсорные экраны мобильных устройств. Все эти типы ввода показаны в этом разделе.
Кроме того, Unity может воспользоваться микрофоном компьютера и веб-камерой для ввода аудио и видео данных. Смотрите разделы руководства Audio иGraphics для получения дополнительной информации.
Традиционный игровой ввод
Unity поддерживает ввод с клавиатуры, джойстика и гейпада.
Виртуальные оси и кнопки могут быть созданны в Input Manager, и конечные пользователи смогут настраивать ввод с клавиатуры на экране конфигурационного диалогового окна.
Вы можете настроить джойстики, геймпады, клавиатуру и мышь, затем обращаться к ним через один простой скриптовый интерфейс.
Из скриптов все виртуальные оси доступны по их именам.
Каждый проект при создании содержит следующие оси ввода по умолчанию:
Horizontal и Vertical привязаны к w, a, s, d и клавишам направления.
Fire1, Fire2, Fire3 привязаны к клавишам Control, Option (Alt) и Command соответственно.
Mouse X и Mouse Y привязаны к перемещениям мыши.
Window Shake X и Window Shake Y привязаны к перемещению окна.
