无法在Unity中的Inspector变量中更改数组大小?

据我所知,这是如何设置矢量“大小”

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

但是当代码运行时,它看起来像这样 在此处输入图像描述

我为[4]添加的数字似乎并不重要,大小始终保持为6.我不确定6号码来自哪里,因为我没有设置任何数字。

我甚至试过

  public Color[] teamAColors; 

然后让我的数组自动填充长度,但这也不会改变6。

这很简单

  public Color[] teamAColors; 

但那“不会消失”的那个“6”值呢?

但你已经陷入了“重置”GOTCHYA的统一!

在此处输入图像描述

只需使用不同的变量名称即可

 public Color[] teste; 

看到?

在此处输入图像描述

在那里,工作正常。 您可以动态设置大小,只要您从未在代码中放置大小即可

这是秘密:

Unity以复杂的方式“坚持”序列化值。

如果您在代码中设置大小甚至一次,即使您随后更改了代码,Unity也会“记住”这个。

有一种方法可以重置这个“内部”值..寻找着名的微小重置按钮

它附在微小的Cog符号上。

在此处输入图像描述

要记住的关键规则是:

从来没有,在UNITY公共变量的代码中有一个默认的价值!!

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

当你在这里时,这是一个非常方便的技巧。 试试这个 …

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

这是一个更酷的! 试试吧!

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

尝试从组件上的齿轮按钮点击“重置”。 它将重置所有已填充的条目,但应删除缓存的大小。

我希望有所帮助!