Игровой движок (game engine) — это программная платформа, которая позволяет быстро создавать игры. Он включает в себя предварительно настроенные функции для работы с графикой, звуком и другими материалами, а также физический движок и многое другое...
Новичкам достаточно знать, что это инструмент, который помогает нам быстро разрабатывать игры.
Также известен как Unity 3D, его особенностью является простота использования, мощные возможности и значительное повышение производительности разработки.
Литературный перевод: центр управления Unity. Unity имеет множество версий, которые часто обновляются, и многие из этих версий несовместимы между собой. Поэтому нужен центр управления для координации разных версий Unity, и таким образом появился Unity Hub.
Он упрощает поиск, загрузку и управление проектами и контентом Unity.официальная документация Unity Hub
официальная документация по установке Unity Hub
официальная документация по установке Unity через Unity Hub
Два способа:
официальная документация по запуску Unity
Хотя Unity открытый, он не полностью бесплатный. Есть несколько версий, среди которых бесплатная версия для личного использования, а также платные версии для профессионалов и предприятий. Поэтому требуется активация лицензии для использования.
Обычному пользователю следует выбирать личную версию при обучении или неприбыльном использовании, чтобы получить соответствующую лицензию для активации Unity. Операционные шаги, см. официальную документацию по лицензиям и активации## 3. Использование образцового проекта обучения
Игровое программирование является частью общего программирования и требует использования одного из языков программирования. В Unity используется язык C#, созданный компанией Microsoft.
Компилятор C# предназначен для написания кода на C# и его компиляции в исполняемые программы для компьютера. Здесь мы будем использовать Visual Studio от Microsoft.
public class HelloWorld : MonoBehaviour { // Start вызывается перед первым обновлением кадра void Start() {
}
// Update вызывается один раз за каждый кадр
void Update()
{
}
void OnGUI(){
GUI.skin.label.fontSize = 100;
GUI.Label(new Rect(10, 10, Screen.width, Screen.height), "Привет, мир!");
}
}
6. Запустите игру и проверьте результат
### 4.3 Компиляция и вывод
1. Файл -> Настройки сборки -> Выберите текущий сценарий SampleScene
2. Выберите платформу PC
3. Сборка и запуск, выберите папку для хранения
4. После завершения сборки проект будет запущен автоматически. Поскольку нет никаких действий, чтобы закрыть его, используйте сочетание клавиш Windows Alt+F4
5. Будут созданы три файла и две папки. Все они могут быть скопированы в другую директорию, после чего можно запустить проект двойным кликом на HelloWorld.exe:
- HelloWorld.exe
- UnityCrashHandler64.exe
- UnityPlayer.dll
- HelloWorld_Data
- MonoBleedingEdge
### 4.4 Отладка программы
#### 4.4.1 Вывод лога
1. В местах, где требуется отображение информации, добавьте следующий код:
```C#
Debug.Log("информация для вывода..."); // информация для вывода должна быть типа строки
Наиболее базовый игровой элемент в Unity, по умолчанию содержит компонент Transform (преобразование), а также может содержать другие компоненты (components), что делает его уникальным благодаря различным свойствам, зависящим от используемых компонентов.
Обратите внимание: при сериализации и десериализации говорится о входе и выходе данных, которые относятся к памяти при выполнении игры.1. Сериализация (для преобразования объекта памяти в двоичный поток данных): Процесс преобразования указанного объекта из оперативной памяти программы в двоичный поток данных с целью подготовки его к передаче (например, запись в файл на жесткий диск или отправка другому компьютеру через сеть).
Сериализация скриптов представляет собой процесс присвоения скрипта любому GameObject в сцене таким образом, чтобы можно было установить начальные значения свойств этого скрипта в окне Inspector.
Получение компонента Используйте метод GetComponent(), чтобы получить указанный тип компонента.
// Получаем компонент Rigidbody текущего GameObject
Rigidbody rigid = this.gameObject.GetComponent<Rigidbody>();
if (rigid == null) { // если компонент отсутствует
// добавляем новый компонент Rigidbody
rigid = this.gameObject.AddComponent<Rigidbody>();
}
Общение между компонентами Разные компоненты одного GameObject могут взаимодействовать через метод SendMessage, вызывая методы других компонентов по имени. Однако это менее эффективно и менее безопасно.
Наследование и композиция Компоненты являются C# классами, поэтому они могут использовать наследование и композицию так же, как обычные C# классы.
По умолчанию Unity однопоточен, поэтому корутина — это способ решения проблем однопоточной работы (когда требуется многопоточность, но её нет, что приводит к запутанному коду при использовании однопоточности вместо многопоточности). Корутина не является многопоточностью, а представляет собой псевдоасинхронную операцию, имитирующую многопоточность, что является одним из методов программирования.> В традиционных реальных играх, когда в методе Update требуется задержка выполнения некоторых команд или выполнение этих команд при достижении определённых условий, обычно используется таймер. Этот подход требует добавления множества переменных и кода, что приводит к запутанному коду. Кораутин представляет собой фреймворк Unity, созданный для решения этой проблемы, позволяющий писать более чистый и легко поддерживаемый код. ## 6. Преднастроенные объекты Prefab и управление ресурсамиПреднастроенный объект (преднастроенный шаблон) Prefab: Шаблон игрового объекта с заранее настроенными функциями, который можно повторно использовать.
Внимание:
- Изменение созданных с помощью Prefab игровых объектов по умолчанию не влияет на сам Prefab, если изменения не записываются обратно в Prefab через правую панель инспектора.
- Изменения Prefab автоматически синхронизируются с созданными им игровыми объектами (если они не были изменены).
Создание игры обычно требует большого количества внешних ресурсов, таких как графические материалы, звуковые эффекты, анимация и библиотеки. Unity позволяет легко импортировать и управлять этими внешними ресурсами.
Для различных потребностей существуют различные способы управления ресурсами. Здесь представлено рекомендованное решение:
Импортированные ресурсы можно просматривать и использовать в окне проекта.2. Управление пакетами: Выберите менеджера пакетов в окне, чтобы управлять внешними пакетами ресурсов. Если вы хотите переиспользовать какой-либо ресурс (например, определённый prefab) в других проектах, его следует экспортировать в виде пакета перед использованием.### 6.3 Управление плагинами Unity
Менеджер пакетов также позволяет управлять плагинами Unity, такими как пакеты, скачиваемые из Asset Store. Все эти пакеты могут быть централизованно установлены и управляемы здесь.
// Прямое использование класса для создания нового игрового объекта
GameObject gameObject = new GameObject("MyGameObject1");
// Отсылка к prefab или модели в проекте
public GameObject prefab;
// Объявление приватной переменной для хранения инстанса
private GameObject instance;
void Start() {
// Создание инстанса
instance = Instantiate(prefab);
// Удаление инстанса через 0.1 секунду
Destroy(instance, 0.1f);
}
Прямое использование стандартных методов ввода-вывода C# для чтения ресурсов в Unity невозможно. Для этого ресурсы должны быть помещены в папку Resources, которую Unity позволяет создавать в различных местах проекта.
Чтобы прочитать ресурсы, можно использовать метод Resources.Load
, а также метод Instantiate
для создания экземпляров ресурсов.
Система управления ресурсами## 8. Сохранение проекта
сохранить сцену
— сохраняет текущую сцену
При выходе из Unity можно выполнить сохранить проект
для сохранения всего проекта игры
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )