Кастомизация испектора в Unity.
В этой статье мы рассмотрим самый простой способ кастомизации инспектора - атрибуты.
Введение
Для начала рассмотрим как Unity отображает поля в инспекторе по умолчанию.Во-первых, Unity не даёт указать данные несоответствующего типа. Т.е в целочисленном поле ничего кроме цифр не пропишешь.
Во-вторых, отображаются только сериализируемые переменные. Это публичные переменные и приватные с атрибутом (об этом ниже).
В-третьих, имена полей приводится к читабельному виду. Имя разбивается на слова, вырезаются префиксы "_" и "m_".
Например, переменные "appleCount" или "_appleCount" отобразятся как "Apple Count".
Это первый шаг к пониманию значений настроек пользователем, но не единственный.
Атрибуты
[SerializeField]
Данный атрибут делает поле сериализуемым, что позволяет выводить приватные поля в инспектор.public class Player : MonoBehaviour
{
[SerializeField]
private float _health = 100f;
//...
}
[HideInInspector]
Атрибут для скрытия сериализируемого поля в инспекторе.public class Player : MonoBehaviour
{
[SerializeField]
[HideInInspector]
private float _health = 100f;
//...
}
[Tooltip]
Атрибут подсказки. В параметрах передаётся текст, который будет выводиться при наведении на поле в инспекторе.public class Player : MonoBehaviour
{
[SerializeField]
[Tooltip("Здоровье игрока")]
private float _health = 100f;
//...
}
[Range]
Атрибут для числовых значений. Принимает минимальное и максимальное значение.Поле отображается в виде ползунка.
public class Player : MonoBehaviour
{
[SerializeField]
[Tooltip("Кол-во жизней игрока")]
[Range(1, 5)]
private int _liveCount = 3;
//...
}
[Multiline] и [TextArea]
Атрибуты многострочности. Полезны, когда нужно использовать перенос в строковой переменной.Отличие только в наличии полосы прокрутки при большом количестве строк.
public class Example : MonoBehaviour
{
[SerializeField]
[Multiline]
private string _multiline = "";
[SerializeField]
[TextArea]
private string _textArea = "";
//...
}
[Header]
Атрибут для отображения зоголовка. Принимает текст зоголовка.Можно использовать для разбиения настроек по категориям.
public class Example : MonoBehaviour
{
[Header("Letters")]
[SerializeField]
private int _settingA = 0;
[SerializeField]
private int _settingB = 1;
[SerializeField]
private int _settingC = 2;
[Header("Numbers")]
[SerializeField]
private int _setting0 = 0;
[SerializeField]
private int _setting1 = 1;
[SerializeField]
private int _setting2 = 2;
//...
}
[Space]
Атрибут пустого пространства. Принимает высоту пропуска в пикселях.public class Example : MonoBehaviour
{
[SerializeField]
private bool _top = true;
[Space(20)]
[SerializeField]
private bool _bottom = false;
//...
}
Это все основные атрибуты кастомизации инспектора Unity.