【发布时间】:2016-02-02 23:46:07
【问题描述】:
根据我的阅读,这是矢量“大小”的设置方式
public Color[] teamAColors = new Color[4];
我为 [4] 输入的数字似乎无关紧要,大小始终保持为 6。我什至不确定 6 数字的来源,因为我没有为该数字设置任何内容。
我什至尝试过
public Color[] teamAColors;
然后让我的数组自动填充长度,但这也不会改变 6。
【问题讨论】:
根据我的阅读,这是矢量“大小”的设置方式
public Color[] teamAColors = new Color[4];
我为 [4] 输入的数字似乎无关紧要,大小始终保持为 6。我什至不确定 6 数字的来源,因为我没有为该数字设置任何内容。
我什至尝试过
public Color[] teamAColors;
然后让我的数组自动填充长度,但这也不会改变 6。
【问题讨论】:
尝试从组件上的齿轮按钮点击“重置”。 它将重置所有填充的条目,但它应该删除缓存的大小。
希望对你有帮助!
【讨论】:
很简单
public Color[] teamAColors;
但是那个“不会消失”的“6”值呢?
但是您偶然发现了团结中的“重置”GOTCHYA!
尝试使用不同的变量名...
public Color[] teste;
看到了吗?
就是这样,工作正常。您可以动态设置大小,只要您从不将大小放入代码中。
这是秘密:
Unity 以一种复杂的方式“保留”序列化的值。
如果您在代码中设置了一次大小,即使您随后更改了代码,Unity 也会“记住”这一点。
有一种方法可以重置这个“内部”值。寻找著名的小重置按钮。
它附在微小的 Cog 符号上。
要记住的关键规则是:
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;
【讨论】:
[System.NonSerialized] public,这在您欢呼时至关重要
// generally NEVER DO THIS ..我实际上总是这样做...我更喜欢将我的值默认为有用的东西,而不是总是0 ...在某些情况下你不想使用Range,但仍然允许用户(开发人员)将其设置为0,但无论如何都要给它一个适当的默认值