¿No se puede cambiar el tamaño de la matriz en la variable Inspector en Unity?

Por lo que he leído, así es como se establece un vector “Tamaño”

public Color[] teamAColors = new Color[4]; 

Pero cuando se ejecuta el código, se ve así enter image description here

No parece importar el número que puse para el [4], el Tamaño siempre se mantiene 6. No estoy seguro de dónde viene el número 6 ya que no he configurado nada para ese número.

Incluso he intentado

  public Color[] teamAColors; 

Y luego deje que mi matriz autocomplete la Longitud, pero eso tampoco cambia el 6.

Es simplemente

  public Color[] teamAColors; 

¿Pero qué pasa con ese valor de “6” que “no desaparecerá”?

¡PERO HAS APAGADO AL GOTCHYA “RESET” EN UNIDAD!

enter image description here

Solo inténtalo con un nombre de variable diferente

 public Color[] teste; 

¿Ver?

enter image description here

Ahí está, trabajando bien. Puede establecer el tamaño dinámicamente, siempre que nunca coloque el tamaño en el código .

Aquí está el secreto:

La unidad “se aferra” a los valores serializados de una manera complicada.

Si configura el tamaño en código incluso una vez, Unity “recuerda” esto incluso si posteriormente cambia el código.

Hay una manera de restablecer este valor “interno” … busque el famoso botón de reinicio .

Está unido al pequeño símbolo Cog.

enter image description here

La regla crítica para recordar es esta:

¡NUNCA, NUNCA, TIENE UN VALOR POR DEFECTO EN EL CÓDIGO DE VARIABLES PÚBLICAS EN LA UNIDAD!

 public float x; // do this public float x=2f; // generally NEVER DO THIS 

Mientras lo haces, aquí hay un truco increíblemente útil. Prueba esto …

 [Header("How good is this?")] public float x; 

¡Aquí hay uno aún más genial! ¡intentalo!

 [Range(2f,4f)] public float x; 

Intente presionar ‘Restablecer’ desde el botón de engranaje en el componente. Restablecerá todas las entradas completadas, pero debería eliminar el tamaño de la memoria caché.

¡Espero que eso ayude!