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

C# 无法在Unity中更改Inspector变量中的数组大小?,c#,arrays,unity3d,C#,Arrays,Unity3d,从我所读到的内容来看,向量“大小”是如何设置的 但是当代码运行时,它看起来是这样的 我给[4]放的数字似乎并不重要,大小总是保持在6。我甚至不知道6号是从哪里来的,因为我没有设置任何数字 我甚至试过 public Color[] teamAColors; 然后让我的数组自动填充长度,但这也不会改变6。这很简单 public Color[] teamAColors; 但是“不会消失”的“6”值呢 但是你在UNITY中偶然发现了“重置”GOTCHYA 只需尝试使用不同的变量名 publi

从我所读到的内容来看,向量“大小”是如何设置的

但是当代码运行时,它看起来是这样的

我给[4]放的数字似乎并不重要,大小总是保持在6。我甚至不知道6号是从哪里来的,因为我没有设置任何数字

我甚至试过

 public Color[] teamAColors;
然后让我的数组自动填充长度,但这也不会改变6。

这很简单

 public Color[] teamAColors;
但是“不会消失”的“6”值呢

但是你在UNITY中偶然发现了“重置”GOTCHYA

只需尝试使用不同的变量名

public Color[] teste;
看到了吗

就在那里,工作很好。您可以动态设置大小,只要从不将大小放入代码中

以下是秘密:

Unity“以复杂的方式保留”序列化值。

如果您在代码中设置了一次大小,Unity将“记住”这一点,即使您随后更改了代码

有一种方法可以重置此“内部”值。。查找著名的微型重置按钮

它附着在微小的齿轮符号上

要记住的关键规则是:

永远不要在UNITY中的公共变量代码中使用默认值!! 当你这么做的时候,这里有一个非常方便的窍门。试试这个

[Header("How good is this?")]
public float x;
这里有一个更酷的!试试看

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

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


我希望这有帮助

谢谢!成功了。啊,嘿!关于这一点的微妙之处,这里有一个很好的长篇大论的解释。请注意,还提到了
[System.NonSerialized]public
,这一点在您继续Cheerralert@TimCooley的过程中非常重要。我用更多精彩的信息包装了答案,请务必重新加载。查看结尾的技巧
//通常不要这样做。。我会一直这样做。。。我更喜欢将我的值默认为有用的值,而不是总是
0
。。。有些情况下,您不想使用
Range
,但仍然允许用户(开发人员)甚至将其设置为
0
,但无论如何都要给它一个适当的默认值value@derHugo当然,如果你是专家,可以避免“重置gotchya”,你可以随心所欲!这里,建议初学者避免“重置gotchya”。@TimCooley我很高兴能帮上忙。你介意选择我的回答作为答案吗?谢谢,祝你好运!
[Header("How good is this?")]
public float x;
[Range(2f,4f)]
public float x;