[英]Instantiate and destroy GameObject/ParticleSystem
我当前有一个脚本,该脚本应该实例化粒子系统并在一定时间后销毁它,但是在实例化对象之后,将显示以下错误代码:
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);
}
}
我如何实例化此粒子系统并正确销毁它?
您正在尝试销毁预制smoke
ParticleSystem
而不是您实例化的ParticleSystem
的预制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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.