微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将游戏对象分配给数组但抛出 IndexOutOfRangeException

如何解决将游戏对象分配给数组但抛出 IndexOutOfRangeException

我有一个系统可以查看图像,获取每个像素并生成一个块来表示每个像素。我目前正在通过创建一个组合网格系统来优化它,以便所有数以千计的立方体对象都变成一个单一的网格。

我一直在关注这个视频: https://www.youtube.com/watch?v=NcmPz_nbArY

本质上,我遇到的问题是当生成立方体时,我尝试将其添加到数组计数器(从 0 开始)位置处的游戏对象数组中。但是,我总是抛出这个错误

IndexOutOfRangeException: Index was outside the bounds of the array.
(wrapper stelemref) System.Object.virt_stelemref_sealed_class(intptr,object)

我只是不明白怎么做。数组从位置 0 开始,我告诉它在最初为 0 的数组计数器的位置设置一个游戏对象。甚至抛出一个Debug.Log(arraycounter)显示值为0,但还是抛出错误

数组的作用是作为一个参数,可以将其扔到CombineGroundMeshes()函数中,以便该函数知道它需要为哪些对象组合网格。

最初,将有 2 个函数一个用于组合地面网格,一个用于组合墙网格,但我已将所有内容都用于地面网格,直到此问题得到解决。所以不要混淆为什么有 3 个 if 语句将不同颜色的像素放到同一个数组中!

我的整个源代码可以在这个 pastebin 中找到。 https://pastebin.com/sYjmzsnz

问题可以在第 105 到 144 行。发生错误的地方是在第 118、129 和 140 行。

编辑: 有人要我的代码的迷你版本?我已经尽力在下面总结它

public GameObject[] groundobjects;
...
foreach(Vector3 pos in spawnpositions)
     counter = 1
     arraycounter = 0
     Color colour = pixel[counter];
     if(colour.equals(Color.White))
     {
          //instantiate gameobject as a transform
          //change transforms localscale
          groundobjects[arraycounter] = spawnedTransform.gameObject;
          // The above line is causing the error (Unity console log)
     }
counter++;                                                                                          
arraycounter++;
...
for (int i = 0; i < groundobjects.Length; i++)
     {
          CombineGroundMeshes(groundobjects[i]);
     }  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。