【问题标题】:Unity 5 2DArray, Object poolingUnity 5 2DArray,对象池
【发布时间】:2017-06-10 01:02:15
【问题描述】:

我正在尝试为我的 WaveSpawner 创建一个对象池系统。

这是我得到的(objectPool 是一个二维数组):

objectPool = new GameObject[wave.Length,0];

//set columns
for(int i = 0;i< objectPool.Length;i++)
{
    objectPool = new GameObject[i,wave[i].numberToSpawn]; //set row for ech column
}


for (int p = 0; p < wave.Length; p++)
{
    for(int i = 0;i<wave[p].numberToSpawn;i++)
    {
        GameObject gbj = Instantiate(wave[p].spawnObject);
        gbj.transform.position = RandomizePositions();
        gbj.SetActive(false);
        objectPool[p,i]= gbj; //fill 2D array
    }
}

这就是我得到的错误;

数组索引超出范围。

【问题讨论】:

    标签: c# arrays unity3d unity5 object-pooling


    【解决方案1】:
    objectPool = new GameObject[wave.Length,0];
    

    您正在创建第二维大小为 0 的数组。

    【讨论】:

      【解决方案2】:
      objectPool = new GameObject[wave.Length,0];
      

      第二个维度的大小为 0

      for(int i = 0;i< objectPool.Length;i++)
      

      Length 返回所有维度的大小,使用array.GetLength();

      你应该阅读如何使用二维数组

      https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多