C# 错误CS0021:无法将带[]的索引应用于“UnityEngine.GameObject”类型的表达式
我试图使用Unity预制件进行简单的爆炸,但它一直在说 错误CS0021:无法将带[]的索引应用于“UnityEngine.GameObject”类型的表达式 我检查了代码,没有发现问题。以下是我尝试过的:C# 错误CS0021:无法将带[]的索引应用于“UnityEngine.GameObject”类型的表达式,c#,unity3d,C#,Unity3d,我试图使用Unity预制件进行简单的爆炸,但它一直在说 错误CS0021:无法将带[]的索引应用于“UnityEngine.GameObject”类型的表达式 我检查了代码,没有发现问题。以下是我尝试过的: public GameObject[] ParticlePrefab; public int amountOfPartcles = 3; // Use this for initialization void Start () { for(i
public GameObject[] ParticlePrefab;
public int amountOfPartcles = 3;
// Use this for initialization
void Start ()
{
for(int i = 0; i<amountOfPartcles; i++)
{
GameObject ParticlePrefab = Instantiate(ParticlePrefab[Random.Range(0,amountOfPartcles)]);
ParticlePrefab.transform.position = transform.position;
}
}
问题是您使用相同名称ParticlePrefab两次 此外,是否确实要更改粒子数量变量以选择粒子。按照这种方式,如果性能差异小于所需的粒子数量,它可能会随机崩溃 以下是如何使用启动方法:
void Start ()
{
const int numberOfPrefabs = ParticlePrefab.Length;
for(int i = 0; i<amountOfPartcles; i++)
{
GameObject particle = Instantiate(ParticlePrefab[Random.Range(0,numberOfPrefabs)]);
particle.transform.position = transform.position;
}
}
核心问题是你有两件事叫做ParticlePrefab——改变其中一件的名字。你为什么要重新声明ParticlePrefab?您在顶部将其声明为数组,现在又将其声明为开始中的局部变量。感谢它解决了索引问题,但现在它显示为Assets/Explosion。cs12,46:错误CS0133:分配给'NumberOfPrefables'的表达式必须是constantRemove常量。