所以,这里是代码:
// ReadOnlyAttribyte,cs
public class ReadOnlyAttribute : PropertyAttribute
{
}
// ReadOnlyDrawer.cs
[CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
public class ReadOnlyDrawer : PropertyDrawer
{
public override float GetPropertyHeight(SerializedProperty property,
GUIContent label)
{
return EditorGUI.GetPropertyHeight(property, label, true);
}
public override void OnGUI(Rect position,
SerializedProperty property,
GUIContent label)
{
GUI.enabled = false;
EditorGUI.PropertyField(position, property, label, true);
GUI.enabled = true;
}
}
// test
[System.Serializable]
public class GridObjectData : ScriptableObject
{
[ReadOnly]
public int ID;
[ReadOnly]
public List<GridCell> Grid;
}
这是一个简单的自定义属性和属性抽屉,它允许我们禁用所有标记(通过 [ReadOnly])在 GUI 中禁用的字段。所以列表的元素被禁用,但是列表的大小仍然在 GUI 中启用。我该如何解决?
谢谢你。
更新:请看看它在检查器中的外观