SerializedProperty for Array not declared as an array (isArray = false)
I am making my own array type that inherits from List<> but when writing the PropertyDrawer for it, it is not listed as an array.
I have tried to recreate this issue in an empty project and it still is not working.
What makes a class classify as an array?
Has anyone been able to create a custom array and drawer in unity?
Unity Version 2020.3.18f1
Example Code TestArray.cs
[System.Serializable]
public class TestArray : List<string>
{
}
TestArrayDrawer.cs
[CustomPropertyDrawer(typeof(TestArray))]
public class TestArrayDrawer : PropertyDrawer
{
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
return EditorGUIUtility.singleLineHeight * 2;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
int arraySize = property.arraySize;
//Setup rectHeight
position.height = EditorGUIUtility.singleLineHeight;
EditorGUI.LabelField(position, $"Path:{property.propertyPath},isArray:{property.isArray},Size:{arraySize}");
//Draw Decrease Size Button
Rect buttonRect = position;
buttonRect.y += buttonRect.height;
buttonRect.width = buttonRect.width / 2f;
EditorGUI.BeginDisabledGroup(arraySize < 1);
if (GUI.Button(buttonRect, "Remove"))
{
property.DeleteArrayElementAtIndex(arraySize - 1);
}
EditorGUI.EndDisabledGroup();
//Draw Increase Size button
buttonRect.x += buttonRect.width;
if(GUI.Button(buttonRect, "Add"))
{
property.InsertArrayElementAtIndex(Mathf.Max(arraySize - 1, 0));
}
}
}
ArrayTestComponent.cs
public class ArrayTestComponent : MonoBehaviour
{
public TestArray exampleArray;
}
This is what the label reads in the inspector of the ArrayTestComponent If I click add it does not change and fires an error of Invalid property to resize array
Your answer
![](https://koobas.hobune.stream/wayback/20220613045657im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Load an array in editor while keeping unity running 0 Answers
[Simple question] Adding a new SerializedProperty to a SerializedObject 1 Answer
How do I copy UV variables? 2 Answers
The name 'HighScoreList' does not exist in the current context 1 Answer
assigning several positions and call array of raycasts 0 Answers