繁体   English   中英

实例化并销毁GameObject / ParticleSystem

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM