Unity 5 2DArray,对象池

时间:2017-06-10 01:02:16

标签: c# arrays unity3d unity5 object-pooling

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

这就是我得到的(objectPool是一个2D数组):

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
    }
}

这就是我得到的错误;

数组索引超出范围。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

第二维的大小为0

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

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

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

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