我目前有一个应该实例化粒子系统并在一段时间后销毁它的脚本,但在实例化对象后,会显示以下错误代码:
MissingReferenceException:'ParticleSystem'类型的对象已经存在 被摧毁但你还在试图访问它。 你的脚本应该检查它是否为null或你不应该销毁 对象
脚本目前是这样的:
public class MuzzleFlash : MonoBehaviour {
public Transform gun;
public ParticleSystem smoke;
public ParticleSystem flare;
public ParticleSystem bullet;
private float smokeTime = 0.2f;
private void Update () {
if (Input.GetButtonDown("Fire1"))
{
smokeFun();
flare.Play();
bullet.Play();
}
}
void smokeFun()
{
Instantiate(smoke, gun);
Destroy(smoke, smokeTime);
}
}
如何实例化此粒子系统并将其正确销毁?
答案 0 :(得分:6)
您正在尝试销毁ParticleSystem
变量而不是您实例化的smoke
的预制件ParticleSystem
。
Instantiate
函数返回它实例化的任何GameObject。要销毁刚刚实例化的ParticleSystem
,你必须实例化它,将它存储在一个临时变量中,然后用该临时变量将其销毁。
void smokeFun()
{
//Instantiate and store in a temporary variable
ParticleSystem smokeInstance = Instantiate(smoke, gun);
//Destroy the Instantiated ParticleSystem
Destroy(smokeInstance, smokeTime);
}