可以通过将 DecoratorDrawer 改为 PropertyDrawer 来解决这个问题。PropertyDrawer 只作用于单个的属性字段,不会像 DecoratorDrawer 一样影响整个属性序列。以下是一个示例代码:
using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(MyAttribute))]
public class MyDrawer : PropertyDrawer {
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
// 在此处处理属性字段显示
}
}
public class MyAttribute : PropertyAttribute { }
使用 PropertyDrawer 后,可以使用 [MyAttribute] 自定义属性来装饰单个的属性字段。在 Inspector 界面上,该属性字段将使用 MyDrawer 类进行显示和处理。