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

时间:2016-02-02 23:46:08

标签: c# arrays unity3d

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

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

但是当代码运行时,它看起来像这样 enter image description here

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

我甚至试过

 public Color[] teamAColors;

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

2 个答案:

答案 0 :(得分:5)

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

我希望有所帮助!

答案 1 :(得分:4)

只是

 public Color[] teamAColors;

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

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

enter image description here

只需使用不同的变量名称 ...

进行尝试
public Color[] teste;

请参阅?

enter image description here

有,工作正常。您可以动态设置大小,只要您从不在代码中添加大小

这是秘密:

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

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

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

它附在微小的Cog符号上。

enter image description here

要记住的关键规则是:

从来没有,在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;