Skip to content

Latest commit

 

History

History
54 lines (41 loc) · 3.97 KB

File metadata and controls

54 lines (41 loc) · 3.97 KB

ChoiceReferenceAttribute

Данный пакет позволяет вам использовать атрибут [ChoiceReference] для создания popup взаимодействия для выбора подкласса, от которого наследуется базовый класс, указанный вами в качестве типа поля. Списки и массивы также поддерживаются, как и тот факт, что этот атрибут будет снова использоваться в подклассах.

Добавление в проект

Чтобы добавить данный пакет в проект, нужно выполнить следующие шаги:

  1. Откройте PackageManager;
  2. Выберите "Add package from get URL";
  3. Вставьте ссылки на пакеты, которые являются зависимостями данного пакета:
    • https://github.com/Paulsams/MiscUtilities.git 4Вставьте ссылку на данный пакет: https://github.com/Paulsams/ChoiceReferenceAttribute.git

Связанные пакеты

  1. RepairerSerializeReferences (пока что только с 2021.2) - окно редактора, которое позволяет починить ссылки, которые слетели в связи со сменой названия класса, пространстрва имён или сборки: https://github.com/Paulsams/RepairerSerializeReferences

Зависимости

Возможности

  1. Работает для листов/массивов и для любой вложенности данного атрибута;

ВАЖНО: чтобы атрибут работал с листами или массивами, то нужно обязательно базовому классу дописать [System.Serializable]. Не спрашивайте меня почему - такова жизнь:

[SerializeReference, ChoiceReference] private BaseClass _singleChoiceReference;
[SerializeReference, ChoiceReference] private List<BaseClass> _listChoiceReferences;

image

  1. Можно в параметрах атрибута указать флаг nullable, который позволяет из выбора убрать задание объекту состояние "null". Если он будет "false" (а это есть значение по умолчанию), то Вам всё равно надо будет в первый раз выбрать тип, а иначе была бы рекурсия, если в объекте будет поле с этим же атрибутом.
[SerializeReference, ChoiceReference(true)] private BaseClass _singleChoiceReferenceNullable;
[SerializeReference, ChoiceReference] private BaseClass _singleChoiceReferenceNotNullable;

image

  1. ISerializeReferenceChangeValidate - интерфейс, который вы можете реализовать у наследника для того, чтобы сделать какую-то свою проверку, что валидна ли в данный момент смена типа.
  2. Контекстное меню с копированием в буфер обмена, а также проверкой, что вставка валидна.
    image
  3. Доступно множественное редактирование объектов.

Конструкторы

ChoiceReferenceAttribute(bool nullable)

Примеры

Чтобы скачать примеры к данному пакету:

  1. Выберите данный пакет в PackageManager;
  2. Раскройте справа вкладку "Samples";
  3. И нажмите кнопку "Import" на интересующем вас примере.