Когда вы пишете собственный скрипт, то, скорее всего, хотите изменять значения его открытых полей из Инспектора. По умолчанию поля инспектора располагаются рядом друг с другом, а имя поля - единственная информация, которую вы получаете. Вы можете написать собственный редактор, но это требует создания другого скрипта с большим количеством кода, и это требует времени. Есть более простой способ изменять вид Инспектора. Для этого нужно использовать DecoratorDrawers.
DecoratorDrawers - это атрибуты, которые можно установить в любом общедоступном поле в вашем скрипте, чтобы изменить способ его отображения в представлении «Инспектор» (фактически, он отображает некоторые дополнения до отображения поля). Есть два встроенных DecoratorDrawers:
SpaceAttribute
HeaderAttribute
Давайте посмотрим на этот пример:
Чтобы улучшить читаемость, мы можем разделить эти свойства на две группы: здоровье и группа защиты. Чтобы сделать это, просто добавьте [Space (10)] перед полем shield.
Обратите внимание, что добавление [Space (10)] не означает «поместить пробел между полями maxHealth и shield», а вместо этого «нарисовать пробел перед свойством shield». Обычно это не имеет значения, но хорошо знать, если у вас возникнут какие-либо проблемы.
Как вы можете видеть, он похож на SpaceAttribute, но есть также видимая метка заголовка. И это было сделано с одним атрибутом без написания специального сценария редактора!
cначала будет отображено пространство, затем заголовок. Не беспокойтесь, если забудете об этом. Вы заметите свою ошибку, как только посмотрите на Инспектора.
Статья https://blog.theknightsofunity.com/use-decorator-drawers-improve-inspector-view-scripts/
DecoratorDrawers - это атрибуты, которые можно установить в любом общедоступном поле в вашем скрипте, чтобы изменить способ его отображения в представлении «Инспектор» (фактически, он отображает некоторые дополнения до отображения поля). Есть два встроенных DecoratorDrawers:
SpaceAttribute
HeaderAttribute
SpaceAttribute
SpaceAttribute можно использовать, чтобы добавить некоторые интервалы в окне инспектора. Таким образом вы можете разделить две или более группы свойств, чтобы они были более читабельными.Давайте посмотрим на этот пример:
using UnityEngine;Этот скрипт проявляется следующим образом в представлении Инспектора:
public class SpaceDecoratorDrawerExample : MonoBehaviour
{
public int health = 0;
public int maxHealth = 100;
public int shield = 0;
public int maxShield = 0;
}
Чтобы улучшить читаемость, мы можем разделить эти свойства на две группы: здоровье и группа защиты. Чтобы сделать это, просто добавьте [Space (10)] перед полем shield.
using UnityEngine;Число 10 здесь означает, что мы хотим, чтобы пространство было 10 пикселей в высоту. Вот что получается:
public class SpaceDecoratorDrawerExample : MonoBehaviour
{
public int health = 0;
public int maxHealth = 100;
[Space(10)]
public int shield = 0;
public int maxShield = 0;
}
Обратите внимание, что добавление [Space (10)] не означает «поместить пробел между полями maxHealth и shield», а вместо этого «нарисовать пробел перед свойством shield». Обычно это не имеет значения, но хорошо знать, если у вас возникнут какие-либо проблемы.
HeaderAttribute
Атрибут заголовка добавляет метку заголовка перед полем, которому назначен этот атрибут. Вот пример кода:using UnityEngine;А вот как это выглядит:
public class HeaderDecoratorDrawerExample : MonoBehaviour
{
[Header("Health Settings - Здоровье")]
public int health = 0;
public int maxHealth = 100;
[Header("Shield Settings - Защита")]
public int shield = 0;
public int maxShield = 0;
}
Как вы можете видеть, он похож на SpaceAttribute, но есть также видимая метка заголовка. И это было сделано с одним атрибутом без написания специального сценария редактора!
Использование пробела и заголовка одновременно
Вы можете использовать оба свойства одновременно. Все, что вам нужно знать, это то, что они будут отображаться в обратном порядке. Так что если вы напишете:[Header("Shield Settings")]
[Space(10)]
public int shield = 0;
cначала будет отображено пространство, затем заголовок. Не беспокойтесь, если забудете об этом. Вы заметите свою ошибку, как только посмотрите на Инспектора.
Написание DecoratorDrawers
Вы, наверное, думаете, могли бы вы написать свои собственные DecoratorDrawers. Да, это возможно. Мы рассмотрим эту тему в другой статье. Спасибо за чтение!Статья https://blog.theknightsofunity.com/use-decorator-drawers-improve-inspector-view-scripts/
