PropertyAttribute.applyToCollection
Declaration
public bool applyToCollection;Описание
Заставляет атрибут влиять на коллекции вместо их элементов.
Когда вы применяете PropertyAttribute к коллекции, по умолчанию Unity применяет его к каждому элементу коллекции. Когда applyToCollection является true, атрибут применяется к самой коллекции.
Это можно использовать в сценариях, когда функциональность атрибута должна применяться к коллекции в целом, а не по элементам. Некоторые типичные сценарии включают:
- Заголовок списка с возможностью изменения порядка или метка уровня коллекции. Например, при создании ящика, добавляющего строку сводки, указывающую общее количество элементов в списке, или пользовательской панели инструментов добавления или удаления.
- Атрибут, который делает список непереупорядочиваемым или блокирует его размер.
- Проверка по всей коллекции. Например, атрибут, проверяющий, содержит ли список уникальные записи или имеет ли он не менее трех элементов.
using UnityEditor; using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements;
public class Collection : MonoBehaviour { public int before; [GreenCollectionDrawer] public int[] collection; public int after; }
public class GreenCollectionDrawerAttribute : PropertyAttribute { public GreenCollectionDrawerAttribute() : base(true) { } }
[CustomPropertyDrawer(typeof(GreenCollectionDrawerAttribute))] public class GreenCollectionDrawer : PropertyDrawer { public override VisualElement CreatePropertyGUI(SerializedProperty property) { return new PropertyField(property) { style = { backgroundColor = Color.green } }; } }