- PVSM.RU - https://www.pvsm.ru -
Каждый разработчик хочет быстрее создать свою игру, но как сделать это? В этой статье рассмотрены базовые навыки, позволяющие сократить время разработки в среде Unity.
Для поддержания порядка в проекте требуется разобраться с его структурой. Она может быть представлена в следующем виде:
Если у Вас есть сложные объекты, например, персонаж, для него создается отдельная папка, где повторяется вышеописанная структура.
Структура папки персонажа
Другим подходом будет создание вышеописанных папок, и размещение в каждой папке частей объекта, то есть для анимации персонажа будет следующая структура.
Структура папки анимаций
Для упрощения работы с наборами одинаковых объектов их можно объединять в группы, где в качестве родителя выступает пустой объект.
Это поможет легко отключить свет на всей локации или в помещении. Узнать месторасположение всех объектов.
Каждый элемент называется относительно того, что он из себя представляет, в конце добавляется префикс родительского объекта. Например, золотой слиток в пещере будет носить название «goldBar_cv1», где cv1 обозначает cave1, а дерево в лесу «tree_frt1», где frt1 обозначает forest1. Для префикса берется первая буква слова, первая буква второго слога и последняя буква слова.
Пример иерархии объектов на сцене
В Unity имеется 3 основных источника света:
Если есть свет, значит должен быть источник света. Например, в пещере не может быть светло, если у персонажа нет факела (для факела подойдет точечный свет).
Используйте PostProcessing для наложения эффектов.
Сцена без постобработки
Сцена с постобработкой
Нужно найти объект на сцене? Кликните 2 раза по имени объекта в иерархии.
Хотите пролететь по сцене от 1 лица? Зажмите ПКМ и перемещайтесь клавишами WASD, на Shift ускорение.
Требуется посмотреть сцену с разных углов? Воспользуйтесь Гизмо (Gizmos).
Расположение Гизмо
Хотите добавить персонажа на сцену? Добавьте компоненты 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;
}
}
Рассмотрим порядок действий на примере импорта модели из Blender. Предполагается, что Вы уже сделали развертку, нанесли текстуру или выбрали материалы.
Избегайте выполнения дорогостоящих операций. Примером может служить определение расстояния до объекта.
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!");
}
}
}
}
Прочитать больше о дорогостоящих операций можно здесь [1].
Вышеперечисленные навыки позволят значительно сократить время как во время разработки, так и во время сопровождения проекта.
Если Вы считаете, что какие-то темы раскрыты поверхностно, просьба написать в комментариях о них поподробнее.
Автор: Алексей Охотниченко
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/324579
Ссылки в тексте:
[1] здесь: https://docs.microsoft.com/ru-ru/windows/mixed-reality/performance-recommendations-for-unity
[2] Источник: https://habr.com/ru/post/459184/?utm_source=habrahabr&utm_medium=rss&utm_campaign=459184
Нажмите здесь для печати.