Базовые навыки для работы с Unity

в 15:55, , рубрики: C#, unity, unity 5, unity3d, разработка игр, советы, советы и рекомендации, советы начинающим

Базовые навыки для работы с Unity - 1

Каждый разработчик хочет быстрее создать свою игру, но как сделать это? В этой статье рассмотрены базовые навыки, позволяющие сократить время разработки в среде Unity.

Навык #1 — Работа со структурой проекта

Для поддержания порядка в проекте требуется разобраться с его структурой. Она может быть представлена в следующем виде:

  1. Models — хранит все модели, используемые в проекте
  2. Prefabs — хранит все шаблоны моделей
  3. Textures — хранит все текстуры
  4. Materials — хранит все материалы
  5. Scripts — хранит все скрипты
  6. Sounds — хранит все звуки
  7. Animations — хранит все анимации

Если у Вас есть сложные объекты, например, персонаж, для него создается отдельная папка, где повторяется вышеописанная структура.

Базовые навыки для работы с Unity - 2
Структура папки персонажа

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

Базовые навыки для работы с Unity - 3
Структура папки анимаций

Навык #2 — Работа с иерархией объектов на сцене

Для упрощения работы с наборами одинаковых объектов их можно объединять в группы, где в качестве родителя выступает пустой объект.

Это поможет легко отключить свет на всей локации или в помещении. Узнать месторасположение всех объектов.

Каждый элемент называется относительно того, что он из себя представляет, в конце добавляется префикс родительского объекта. Например, золотой слиток в пещере будет носить название «goldBar_cv1», где cv1 обозначает cave1, а дерево в лесу «tree_frt1», где frt1 обозначает forest1. Для префикса берется первая буква слова, первая буква второго слога и последняя буква слова.

Базовые навыки для работы с Unity - 4
Пример иерархии объектов на сцене

Навык #3 — Работа с визуальным представлением

В Unity имеется 3 основных источника света:

  1. Естественный свет (Directional Light) — аналог Солнца
  2. Точечный свет (Point Light) — аналог лампочки
  3. Прожектор (Spotlight) — аналог фонарика

Если есть свет, значит должен быть источник света. Например, в пещере не может быть светло, если у персонажа нет факела (для факела подойдет точечный свет).

Используйте PostProcessing для наложения эффектов.

image
Сцена без постобработки

image
Сцена с постобработкой

Навык #4 — Работа с камерой

Нужно найти объект на сцене? Кликните 2 раза по имени объекта в иерархии.

Хотите пролететь по сцене от 1 лица? Зажмите ПКМ и перемещайтесь клавишами WASD, на Shift ускорение.

Требуется посмотреть сцену с разных углов? Воспользуйтесь Гизмо (Gizmos).

Базовые навыки для работы с Unity - 7
Расположение Гизмо

Навык #5 — Работа с объектами

Хотите добавить персонажа на сцену? Добавьте компоненты RigidBody и CapsuleCollaider. RigidBody говорит движку, что к этому объекту должна применяться физика твердого тела.

Хотите проверить столкновение персонажа с объектом? Добавьте объекту компонент MeshCollaider и в скрипте персонажа в функции OnCollisionEnter проверяйте тег (tag) объекта, с которым столкнулся персонаж.

Пример реализации проверки столкновения персонажа с объектом

    private void OnCollisionEnter(Collision collision)
    {
        switch (collision.gameObject.tag)
        {
            case "Moneys":
                Destroy(collision.gameObject);

                // Do something
                break;
            case "TrapSpikes":
                hitPoints -= 5.5;

                break;
        }
    }

Навык #6 — Импорт моделей

Рассмотрим порядок действий на примере импорта модели из Blender. Предполагается, что Вы уже сделали развертку, нанесли текстуру или выбрали материалы.

  1. Расположить модель в нулевых координатах (центрировать относительно осей)
  2. Установить масштаб (Scale) равным единице
  3. Удалить лишние объекты (камера, источник света)
  4. Сохранить модель в формате .fbx
  5. Перенести файл в Unity
  6. Растащить по папкам — Модель к Моделям, Материал к Материалам и т.д.
  7. Создать префаб модели
  8. Работать дальше с префабами

Навык #7 — Реализация логики

Избегайте выполнения дорогостоящих операций. Примером может служить определение расстояния до объекта.

Пример с дорогостоящей операцией

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    public Transform other;

    void Example()
    {
        if (other)
        {
// Считаем квадратный корень из суммы квадратов
// В данном случае квадратный корень является дорогостоящей операцией
            float dist = Vector3.Distance(other.position, transform.position); 
            print("Distance to other: " + dist);
        }
    }
}

Пример более быстрой реализации

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    public Transform other;
    public float closeDistance = 5.0f;

    void Update()
    {
        if (other)
        {
            Vector3 offset = other.position - transform.position;
 // Считаем только сумму квадратов
            float sqrLen = offset.sqrMagnitude;

            // Возводим в квадрат расстояние, с которым мы сравниваем
            if (sqrLen < closeDistance * closeDistance)
            {
                print("The other transform is close to me!");
            }
        }
    }
}

Прочитать больше о дорогостоящих операций можно здесь.

Заключение

Вышеперечисленные навыки позволят значительно сократить время как во время разработки, так и во время сопровождения проекта.

Если Вы считаете, что какие-то темы раскрыты поверхностно, просьба написать в комментариях о них поподробнее.

Автор: Алексей Охотниченко

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js