diff --git a/Editor/Elements/TriListElement.cs b/Editor/Elements/TriListElement.cs index c75fce3..8b7b9c5 100644 --- a/Editor/Elements/TriListElement.cs +++ b/Editor/Elements/TriListElement.cs @@ -19,6 +19,7 @@ public class TriListElement : TriElement private readonly ReorderableList _reorderableListGui; private readonly bool _alwaysExpanded; private readonly bool _showElementLabels; + private readonly bool _fixDefaultValue; private float _lastContentWidth; @@ -30,6 +31,7 @@ public TriListElement(TriProperty property) _property = property; _alwaysExpanded = settings?.AlwaysExpanded ?? false; + _fixDefaultValue = settings?.FixDefaultValue ?? false; _showElementLabels = settings?.ShowElementLabels ?? false; _reorderableListGui = new ReorderableList(null, _property.ArrayElementType) { @@ -134,6 +136,12 @@ private void AddElementCallback(ReorderableList reorderableList, Object addedRef if (_property.TryGetSerializedProperty(out _)) { ReorderableListProxy.DoAddButton(reorderableList, addedReferenceValue); + + if (_fixDefaultValue) + { + reorderableList.serializedProperty.GetArrayElementAtIndex(reorderableList.index).boxedValue = Activator.CreateInstance(_property.ArrayElementType); + } + _property.NotifyValueChanged(); return; } diff --git a/Runtime/Attributes/ListDrawerSettings.cs b/Runtime/Attributes/ListDrawerSettings.cs index fd0f368..7117798 100644 --- a/Runtime/Attributes/ListDrawerSettings.cs +++ b/Runtime/Attributes/ListDrawerSettings.cs @@ -12,5 +12,6 @@ public class ListDrawerSettingsAttribute : Attribute public bool HideRemoveButton { get; set; } public bool AlwaysExpanded { get; set; } public bool ShowElementLabels { get; set; } + public bool FixDefaultValue { get; set; } = false; } } \ No newline at end of file