【问题标题】:Unable to change array size in Inspector variable in Unity?无法在 Unity 的 Inspector 变量中更改数组大小?
【发布时间】:2016-02-02 23:46:07
【问题描述】:

根据我的阅读,这是矢量“大小”的设置方式

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

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

我为 [4] 输入的数字似乎无关紧要,大小始终保持为 6。我什至不确定 6 数字的来源,因为我没有为该数字设置任何内容。

我什至尝试过

 public Color[] teamAColors;

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

【问题讨论】:

    标签: c# arrays unity3d


    【解决方案1】:

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

    希望对你有帮助!

    【讨论】:

    • @TimCooley 我很高兴能帮上忙。您介意选择我的回答作为答案(复选标记)吗?谢谢,祝你好运!
    【解决方案2】:

    很简单

     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;
    

    【讨论】:

    • 谢谢!做到了。
    • 啊,嘿!这是关于其微妙之处的一个很好的冗长解释。 answers.unity3d.com/answers/254205/view.html 请注意,还提到了[System.NonSerialized] public,这在您欢呼时至关重要
    • alert @TimCooley 我用更多很棒的信息打包了答案,一定要重新加载。看看最后的技巧
    • // generally NEVER DO THIS ..我实际上总是这样做...我更喜欢将我的值默认为有用的东西,而不是总是0 ...在某些情况下你不想使用Range,但仍然允许用户(开发人员)将其设置为0,但无论如何都要给它一个适当的默认值
    • @derHugo 当然,如果您是专家并且可以避免“reset gotchya”,您可以随心所欲!在这里,建议初学者避免“reset gotchya”。
    猜你喜欢
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2016-05-12
    相关资源
    最近更新 更多