All array fields (public, [HideInInspector] public, [NonSerialized] public) show as size = 1 with default values in Client Sim Udon Helper, even when uninitialized or hidden

I’m testing how array fields behave in UdonSharpBehaviour, using three basic types, int[], string[], and bool[], combined with different field attributes:

public, [HideInInspector] public, and [NonSerialized] public

When checking the object in Client Sim Udon Helper (a component automatically attached at runtime to the GameObject containing the corresponding UdonBehaviour) → Edit Public Variables during play mode,
I noticed that all of these arrays appear as if they have size = 1 and contain default values (0, empty string, false),
even though they are uninitialized and/or hidden in the Unity Inspector.

For reference, in Unity’s Inspector:

  • public arrays are visible and look like empty arrays (size = 0), but they are not null at runtime.

  • [HideInInspector] public arrays are hidden but still initialized (also not null).

  • [NonSerialized] public arrays are hidden and actually null at runtime.


Example

  1. public
public class ArrayTest : UdonSharpBehaviour
{
    public int[] IntArray;
    public string[] StringArray;
    public bool[] BoolArray;

    private void Start()
    {
        Debug.Log(IntArray == null);    // false
        Debug.Log(StringArray == null); // false
        Debug.Log(BoolArray == null);   // false
    }
}
  1. [HideInInspector] public
public class ArrayTest : UdonSharpBehaviour
{
    [HideInInspector] public int[] IntArray;
    [HideInInspector] public string[] StringArray;
    [HideInInspector] public bool[] BoolArray;

    private void Start()
    {
        Debug.Log(IntArray == null);    // false
        Debug.Log(StringArray == null); // false
        Debug.Log(BoolArray == null);   // false
    }
}
  1. [NonSerialized] public
public class ArrayTest : UdonSharpBehaviour
{
    [NonSerialized] public int[] IntArray;
    [NonSerialized] public string[] StringArray;
    [NonSerialized] public bool[] BoolArray;

    private void Start()
    {
        Debug.Log(IntArray == null);    // true
        Debug.Log(StringArray == null); // true
        Debug.Log(BoolArray == null);   // true
    }
}

Questions

  1. Why does Client Sim Udon Helper show all arrays as size = 1 even when they have not been initialized in Unity?
  2. Why does [NonSerialized] appear as a 1-element array in Client Sim Udon Helper, while being null at runtime (as shown above)?