我正在尝试为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
}
}
这就是我得到的错误;
数组索引超出范围。
答案 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