Блог программиста
Кастомизация редактора Unity. Атрибуты
31.03.2017Кастомизация редактора

Кастомизация испектора в 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.

803
Опрос

Нужен ли курс уроков по созданию игры на Unity3d?