unity3D 中数组越界的问题?

在脚本中public一个数组,然后在unity inspetor面板中添加了3个元素,然后在脚本中调用,可以运行,但是报错,求大神解答。

你使用public Text[] 定义数组,表示该数组的长度在没有赋值之前是不确定的,因此你在代码中就不能用text[1]、text[2]这样的方式去赋值,否则系统会默认你的text.Length有固定值且为3。因为你的语句和你面板中的元素个数恰好相等(即text.Length==3),所以虽然会报错但仍旧可以运行。假使你面板中的元素少于3个(即text.Length<3),而text[2]的出现就会让系统认为text.Length有固定值且为3,这里就出现了矛盾,运行到text[2]那一行就一定会报错,那时你的脚本就不能运行了。

修改方式(因没有具体代码就只好)有以下几种给你参考:

    直接定义public Text[3] text,在面板中拉取。(适用于已经知道元素总个数为3但不知道是哪些元素,代码量相对较少)

    2.在脚本中使用GameObject.Find("angle01")形式或者其他形式去给数组赋值,不要在面板中拉取。(适用于已经知道元素也知道元素总个数,代码相对变多但此种方式在企业中最为安全可靠)

3.以上两种方式都没有加入面向对象思想,最好的方式是寻找angle01、angle02、angle03三个元素之间、与数组下标之间的内在联系,通过代码表达出来,且该代码对angle04、angle05等等元素也同样适用,那么在对数组赋值时候,使用该代码就能很好地减少重复性语句,另外记得要用text.Length限制元素最大个数,且不要随便出现数组下标大于1的语句(可以出现下标为0的)。(适用于未知是何种元素也未知元素个数,代码量不用说肯定比上面两个多得多)

温馨提示:答案为网友推荐,仅供参考