Unity won't let me override the default way of drawing an array/list?

I’m trying to make a custom property drawer for arrays/lists to be able to draw them like this editor window:

19809-editor.png

[AttributeUsage(AttributeTargets.Field)]
public class AwesomeCollectionAttribute : PropertyAttribute
{
	
}

public class TestMB : MonoBehaviour
{
	[AwesomeCollection][SerializeField]
	private List<Transform> waypoints; // also tried Transform[] - same.
}

[CustomPropertyDrawer(typeof(AwesomeCollectionAttribute))]
public class AwesomeCollectionDrawer : PropertyDrawer
{
	public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
	{

	}
}

No matter what, Unity will always draw the default array “things” (the fold, the size and the elements) - I don’t want that.

19810-default.png

If I tag the field with [HideInInspector] then this will hide any GUI-related thing I do in the OnGUI (GUI.Label, etc)

Again, what I’m trying to do is, see that editor window at the top? I’m trying to write a property drawer that would draw arrays/lists just like that window.

Any ideas how to override that default drawing and get what I want?

Thanks.

I can’t think of any way to make it work apart from making a new serializable class that wraps your items.

[Serializable]
public class Waypoints
{
    public List<Transform> transforms;
    /* Rest of impl. */
}

And then you can either add an attribute for where it is used:

public class Example : MonoBehaviour 
{
    [CompactedWaypoints]
    public Waypoints waypoints;
}

Or you could possibly just make a specific drawer for that type if you don’t have specific ways to draw a specific field:

public class Example : MonoBehaviour 
{
    public Waypoints waypoints;
}

[CustomPropertyDrawer (typeof(Waypoints))]
public class DefaultWaypointsDrawer : PropertyDrawer 
{
     /* Rest of impl. */
}

If you want to use it as if it was a list, consider implementing the IList interface.

This tutorial may help.
It can draw a list held by a monobehaviour.
but it only works in customInspectors, not CustomDrawers.