Unity 6.3
0 онлайн 21 гостей 3 в системе
Вход

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 } }; } }