Unity 5 2DArray,对象池
Unity 5 2DArray, Object pooling
我正在尝试为我的 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
}
}
这就是我得到的错误;
数组索引超出范围。
objectPool = new GameObject[wave.Length,0];
您正在创建第二维大小为 0 的数组。
objectPool = new GameObject[wave.Length,0];
第二个维度的大小为 0
for(int i = 0;i< objectPool.Length;i++)
Length return所有维度的大小,使用array.GetLength();
您应该阅读如何使用二维数组
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays
我正在尝试为我的 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
}
}
这就是我得到的错误;
数组索引超出范围。
objectPool = new GameObject[wave.Length,0];
您正在创建第二维大小为 0 的数组。
objectPool = new GameObject[wave.Length,0];
第二个维度的大小为 0
for(int i = 0;i< objectPool.Length;i++)
Length return所有维度的大小,使用array.GetLength();
您应该阅读如何使用二维数组
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/multidimensional-arrays