1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chutianshu1981-AwesomeUnityTutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
01-unity基础.md 22 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 08.03.2025 05:27 9b58707

Основы Unity

1. Игровые движки и Unity

Что такое Unity

1.1. Игровые движки

1.1.1. Концепция

Игровой движок (game engine) — это программная платформа, которая позволяет быстро создавать игры. Он включает в себя предварительно настроенные функции для работы с графикой, звуком и другими материалами, а также физический движок и многое другое...

Новичкам достаточно знать, что это инструмент, который помогает нам быстро разрабатывать игры.

1.1.2. Отличные игровые движки
  • Две лидирующие компании: Unity ("единство", то есть "я беру всё на себя, что касается разработки игр") и Unreal ("нереальность")
  • Бесплатный новичок: Godot

1.2. Unity

Также известен как Unity 3D, его особенностью является простота использования, мощные возможности и значительное повышение производительности разработки.

2. Установка и запуск Unity

2.1. Unity Hub (Центр управления)

Литературный перевод: центр управления Unity. Unity имеет множество версий, которые часто обновляются, и многие из этих версий несовместимы между собой. Поэтому нужен центр управления для координации разных версий Unity, и таким образом появился Unity Hub.

Он упрощает поиск, загрузку и управление проектами и контентом Unity.официальная документация Unity Hub

2.2. Установка Unity Hub

официальная документация по установке Unity Hub

  • Создайте аккаунт Unity
  • Получите лицензионный ключ
  • Загрузите Unity Hub
  • Установите Unity Hub

2.3. Установка Unity

официальная документация по установке Unity через Unity Hub

  • Откройте Unity Hub
  • Войдите в свой аккаунт Unity
  • Выберите версию Unity, скачайте и установите её
  • Выберите установленную версию Unity и запустите её

2.4. Запуск проекта Unity

Два способа:

  1. Прямое открытие конкретной версии Unity и загрузка проекта
  2. Открытие проекта через Unity Hub (рекомендовано)

официальная документация по запуску Unity

2.5. Лицензия Unity

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

Обычному пользователю следует выбирать личную версию при обучении или неприбыльном использовании, чтобы получить соответствующую лицензию для активации Unity. Операционные шаги, см. официальную документацию по лицензиям и активации## 3. Использование образцового проекта обучения

  • Откройте Unity Hub
  • В левой части выберите «Обучение», в правой — проект, который вы хотите использовать, выберите его и скачайте
  • Во время загрузки можно открыть «Руководство» и просмотреть руководства по примерному проекту в браузере
  • Выполните проект согласно руководству

4. Привет, мир!

Игровое программирование является частью общего программирования и требует использования одного из языков программирования. В Unity используется язык C#, созданный компанией Microsoft.

4.1 Установка компилятора C#

Компилятор C# предназначен для написания кода на C# и его компиляции в исполняемые программы для компьютера. Здесь мы будем использовать Visual Studio от Microsoft.

  • Скачайте и установите Visual Studio Community 2019/2021 (бесплатная версия)
  • Либо при установке Unity, выберите расширение Visual Studio Community 2019 и установите его

4.2 Создание и написание приветственного сообщения

  1. Откройте Unity Hub
  2. Создайте новый проект Unity, выбрав подходящую версию Unity
  3. Выберите самый простой шаблон 2D проекта и создайте его
  4. В окне Hierarchy выберите Main Camera, затем добавьте компонент C# скрипта и назовите его HelloWorld
  5. Двойным щелчком откройте HelloWorld скрипт, он автоматически откроется в Visual Studio, где вы можете редактировать следующий код:```C# using System.Collections; using System.Collections.Generic; using UnityEngine;

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("информация для вывода..."); // информация для вывода должна быть типа строки
  1. Откройте окно консоли (console) в Unity, чтобы во время выполнения игры видеть указанные сообщения.

4.4.2 Установка точки останова в VS1. В Visual Studio, щелкните перед строкой кода или нажмите F9, чтобы установить точку останова (в виде красной точки) на указанной строке;

  1. В панели инструментов выберите "Attach to Unity and Play" (Подключиться к Unity и начать воспроизведение), компилятор будет работать в режиме отладки;
  2. При запуске игры в Unity, выполнение автоматически останавливается на точках останова, что позволяет разработчику просматривать любую информацию в скриптах.## 5. Основы сценариев Unity

5.1 Компоненты сценария

5.1.1 Game Object:

Наиболее базовый игровой элемент в Unity, по умолчанию содержит компонент Transform (преобразование), а также может содержать другие компоненты (components), что делает его уникальным благодаря различным свойствам, зависящим от используемых компонентов.

5.1.2 Ключевые классы Unity

  • MonoBehaviour Все сценарии Unity наследуются от этого класса, предоставляющего большинство функций Unity. Если сценарий не наследуется от MonoBehaviour, он не сможет выполняться как компонент.
  • Transform По умолчанию каждый Game Object имеет этот компонент, который предоставляет возможности изменения положения, поворота, масштабирования и соединения объектов родителем.
  • Rigidbody/Rigidbody2D (rigidbody) Предоставляет все функции физики, такие как гравитация, упругость, столкновения и т. д.

5.2 Порядок выполнения сценария

  • При запуске игры происходит загрузка операции Assembly.Load, которая загружает связанные с текущим проектом динамически загружаемые библиотеки (.dll) из директории /Library/ScriptAssemblies;
  • Затем запускается текущий уровень и загружаются ресурсы из каталога Resources;
  • Далее загружаются необходимые Game Objects;
  • Если этот Game Object содержит компоненты сценария, эти компоненты будут выполнять методы жизненного цикла в соответствии с порядком, показанным ниже;

5.3 Сериализация сценария

5.3.1 Сериализация и десериализация

Обратите внимание: при сериализации и десериализации говорится о входе и выходе данных, которые относятся к памяти при выполнении игры.1. Сериализация (для преобразования объекта памяти в двоичный поток данных): Процесс преобразования указанного объекта из оперативной памяти программы в двоичный поток данных с целью подготовки его к передаче (например, запись в файл на жесткий диск или отправка другому компьютеру через сеть).

  1. Десериализация (для преобразования двоичного потока данных обратно в объект памяти): Процесс преобразования двоичного потока данных обратно в объект памяти.

5.3.2 Сериализация скриптов

Сериализация скриптов представляет собой процесс присвоения скрипта любому GameObject в сцене таким образом, чтобы можно было установить начальные значения свойств этого скрипта в окне Inspector.

5.4 Компонентное программированиеВ Unity один GameObject может иметь несколько компонентов, каждый из которых выполняет свои уникальные функции (реализованные с помощью скриптов компонентов). Это базовая форма компонентного программирования.Ключевые моменты компонентного программирования:

  1. Получение компонента Используйте метод GetComponent(), чтобы получить указанный тип компонента.

    // Получаем компонент Rigidbody текущего GameObject
    Rigidbody rigid = this.gameObject.GetComponent<Rigidbody>();
    if (rigid == null) { // если компонент отсутствует
        // добавляем новый компонент Rigidbody
        rigid = this.gameObject.AddComponent<Rigidbody>();
    }
  2. Общение между компонентами Разные компоненты одного GameObject могут взаимодействовать через метод SendMessage, вызывая методы других компонентов по имени. Однако это менее эффективно и менее безопасно.

  3. Наследование и композиция Компоненты являются C# классами, поэтому они могут использовать наследование и композицию так же, как обычные C# классы.

5.5 Программирование корутин

По умолчанию Unity однопоточен, поэтому корутина — это способ решения проблем однопоточной работы (когда требуется многопоточность, но её нет, что приводит к запутанному коду при использовании однопоточности вместо многопоточности). Корутина не является многопоточностью, а представляет собой псевдоасинхронную операцию, имитирующую многопоточность, что является одним из методов программирования.> В традиционных реальных играх, когда в методе Update требуется задержка выполнения некоторых команд или выполнение этих команд при достижении определённых условий, обычно используется таймер. Этот подход требует добавления множества переменных и кода, что приводит к запутанному коду. Кораутин представляет собой фреймворк Unity, созданный для решения этой проблемы, позволяющий писать более чистый и легко поддерживаемый код. ## 6. Преднастроенные объекты Prefab и управление ресурсамиПреднастроенный объект (преднастроенный шаблон) Prefab: Шаблон игрового объекта с заранее настроенными функциями, который можно повторно использовать.

6.1 Создание Prefab

  • Создание Prefab: Перетащите игровой объект из сцены в окно проекта.
  • Создание игрового объекта с помощью Prefab: Перетащите Prefab из окна проекта в сцену.

Внимание:

  1. Изменение созданных с помощью Prefab игровых объектов по умолчанию не влияет на сам Prefab, если изменения не записываются обратно в Prefab через правую панель инспектора.
  2. Изменения Prefab автоматически синхронизируются с созданными им игровыми объектами (если они не были изменены).

6.2 Управление ресурсами Unity

Создание игры обычно требует большого количества внешних ресурсов, таких как графические материалы, звуковые эффекты, анимация и библиотеки. Unity позволяет легко импортировать и управлять этими внешними ресурсами.

Для различных потребностей существуют различные способы управления ресурсами. Здесь представлено рекомендованное решение:

  1. Рекомендованный способ: Импорт ресурсов в каталог Assets вашего проекта Unity. Это можно сделать путём простого копирования и вставления или использованием импорта внутри Unity.

Импортированные ресурсы можно просматривать и использовать в окне проекта.2. Управление пакетами: Выберите менеджера пакетов в окне, чтобы управлять внешними пакетами ресурсов. Если вы хотите переиспользовать какой-либо ресурс (например, определённый prefab) в других проектах, его следует экспортировать в виде пакета перед использованием.### 6.3 Управление плагинами Unity

Менеджер пакетов также позволяет управлять плагинами Unity, такими как пакеты, скачиваемые из Asset Store. Все эти пакеты могут быть централизованно установлены и управляемы здесь.

7 Чтение ресурсов и инстанцирование

7.1 Создание первого игрового объекта в скрипте

// Прямое использование класса для создания нового игрового объекта
GameObject gameObject = new GameObject("MyGameObject1");

7.2 Инстанцирование ресурсов через сериализацию

// Отсылка к prefab или модели в проекте
public GameObject prefab;
// Объявление приватной переменной для хранения инстанса
private GameObject instance;

void Start() {
    // Создание инстанса
    instance = Instantiate(prefab);
    // Удаление инстанса через 0.1 секунду
    Destroy(instance, 0.1f);
}

7.3 Чтение ресурсов с помощью IO

Прямое использование стандартных методов ввода-вывода C# для чтения ресурсов в Unity невозможно. Для этого ресурсы должны быть помещены в папку Resources, которую Unity позволяет создавать в различных местах проекта.

Чтобы прочитать ресурсы, можно использовать метод Resources.Load, а также метод Instantiate для создания экземпляров ресурсов.

9. Время и анимация

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chutianshu1981-AwesomeUnityTutorial.git
git@api.gitlife.ru:oschina-mirror/chutianshu1981-AwesomeUnityTutorial.git
oschina-mirror
chutianshu1981-AwesomeUnityTutorial
chutianshu1981-AwesomeUnityTutorial
main