So, hier ist der Code:Unity EditorGUI.PropertyField kann nicht vollständig deaktivieren Array oder Liste
// 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;
}
Hier ist ein einfaches benutzerdefiniertes Attribut und Attribut Schublade, die uns alle markierten (von [Readonly] deaktivieren können) Felder in der GUI deaktiviert werden. Daher sind die Elemente der Liste deaktiviert, die Größe der Liste ist jedoch weiterhin in der GUI aktiviert. Wie könnte ich das beheben?
Vielen Dank.
Update: Bitte nehmen Sie sich einen Blick, wie es looks im Inspektor
Vielen Dank für Ihre Antwort! Was könnte jedoch getan werden? Kann ich verbieten, die ganze Liste irgendwie zu zeichnen? – PaveL
Ich bin nicht vertraut mit jeder Art und Weise, wie Sie es tun können, außer nicht mit einer Liste oder Array, aber mit einem anderen benutzerdefinierten Typ, der es umschließt. –
Danke! Ich nehme es als die richtige Antwort! – PaveL