if (sledgeImpact.didDestruction)
{
sledgeImpact.didDestruction = false;
Collider[] firstColliders = Physics.OverlapBox(walls[0].BoxCenter, walls[0].BoxSize, Quaternion.identity, mask);
Debug.Log(firstColliders.Length);
if (firstColliders.Length < 350)
{
int o = 0;
MeshFilter[] meshFilters = new MeshFilter[] {};
foreach (Collider collider in firstColliders)
{
//Line 43
meshFilters[o] = collider.GetComponent<MeshFilter>();
o++;
}
}
}
我真的很难理解数组,我真的认为这段代码应该能用。不管怎么说,任何帮助都将是非常感激的。
你初始化一个零维数组。
替换 MeshFilter[] meshFilters = new MeshFilter[] {};
由
MeshFilter[] meshFilters = new MeshFilter[firstColliders.Length];
或者在这种情况下,使用List更好。
List<MeshFilter> meshFilters = new List<MeshFilter>();
foreach (Collider collider in firstColliders)
{
meshFilters.Add(collider.GetComponent<MeshFilter>());
}
数组中的项数必须在初始化时定义. 用列表,你可以根据你的需要增加或减少.
在这一行中,你创建了一个空数组。
MeshFilter[] meshFilters = new MeshFilter[] {};
你创建了一个空数组 数组是不可调整大小的,所以任何索引都会超出范围.创建列表代替。
List<MeshFilter> meshFilters = new List<MeshFilter>();
然后,在循环内,
meshFilters.Add(collider.GetComponent<MeshFilter>());