DecoratorDrawer vs EditorGUI.PropertyField

Здесь можно задать свои вопросы напрямую разработчикам Unity3D

DecoratorDrawer vs EditorGUI.PropertyField

Сообщение KingPeas 14 апр 2015, 08:17

Добрый день.
Суть проблемы в следующем: если для свойства объекта назначить DecoratorDrawer, а потом в PropertyDrawer вызвать EditorGUI.PropertyField(), то на выходе получаем дублирование по выводу Decorator-ов.

Вот простейший пример:
Атрибут
Синтаксис:
Используется csharp
using UnityEngine;

public class LabelAttribute : PropertyAttribute {

        public string label = "";
    public LabelAttribute(string label = "")
    {
        if (!string.IsNullOrEmpty(label))
            this.label = label;
    }
}

PropertyDrawer
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEditor;

[CustomPropertyDrawer(typeof(LabelAttribute))]
public class LabelDrawer : PropertyDrawer {

    LabelAttribute LabelAttribute
    {
        get
        {
            return (LabelAttribute)attribute;
        }
    }

    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        if (!string.IsNullOrEmpty(LabelAttribute.label))
            label = new GUIContent(LabelAttribute.label);
        EditorGUI.PropertyField(position, property, label);
    }

}

И использование
Синтаксис:
Используется csharp
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [Header("This is test Decorator.")]
    [Space(15)]
    [Label("Message")]
    public string Test = "Hello World!!!";
    // Use this for initialization
        void Start () {
       
        }
       
        // Update is called once per frame
        void Update () {
       
        }
}
 

В итоге получаем вот такую картинку (см вложение).

А еще хотелось бы пару предложений сделать) чтобы для DecoratorDrawer с order отрицательным выводить их после поля а не до. И еще хотелось бы иметь возможность вносить изменения в вывод Array, а сейчас к сожалению можно управлять только выводом элементов массива.
У вас нет доступа для просмотра вложений в этом сообщении.
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ...
Мой первый плагин PropertyDrawerCollection
Аватара пользователя
KingPeas
UNIт
 
Сообщения: 78
Зарегистрирован: 12 сен 2012, 12:34
Откуда: Новосибирск
Skype: evgeniygurlev
  • Сайт
  • ICQ

Вернуться в Вопросы разработчикам движка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3