我的变量隐藏在我的自定义检查器(PropertyDrawer)中



我开门见山了!我正在使用枚举器来尝试选择我想要显示的变量,但由于某些原因,变量不可见(半可见)

问题示例

那么,这部分代码允许我显示和选择要显示的变量:

[CustomPropertyDrawer(typeof(QuestGoal))]
public class QuestGoal_PropertyDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginProperty(position, label, property);
SerializedProperty questType = property.FindPropertyRelative("questType");
SerializedProperty item = property.FindPropertyRelative("item");
SerializedProperty currentAmount = property.FindPropertyRelative("currentAmount");
SerializedProperty totalAmount = property.FindPropertyRelative("totalAmount");
SerializedProperty positionQuest = property.FindPropertyRelative("positionQuest");
float lineHeight = EditorGUIUtility.singleLineHeight;
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
EditorGUI.PropertyField(position, questType, GUIContent.none);

switch (questType.intValue)
{
case (int)QuestType.CRAFTING:
position = new Rect(position.x, position.y + lineHeight, position.width, position.height);
EditorGUI.PropertyField(position, item);
break;
case (int)QuestType.GATHERING:
position = new Rect(position.x, position.y + lineHeight, position.width, position.height);
EditorGUI.PropertyField(position, currentAmount);
position = new Rect(position.x, position.y + lineHeight * 2, position.width, position.height);
EditorGUI.PropertyField(position, totalAmount);
break;
case (int)QuestType.JOURNEY:
position = new Rect(position.x, position.y + lineHeight, position.width, position.height);
EditorGUI.PropertyField(position, positionQuest);
break;
default:
break;
}
EditorGUI.EndProperty();
}
}

这个开关允许我选择变量,但是在枚举数之后的值仍然是隐藏的

你需要实现:

public override float GetPropertyHeight( SerializedProperty property, GUIContent label )

以便编辑器知道为您的属性保留多少空间。现在你有了默认的高度(可能是editorguiutility。singlelineheight)然后你需要更多所以你的属性是clipped

最新更新