将游戏对象分配给数组但抛出 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 (将#修改为@)