一旦我预制它,可收集的物体就不起作用了

时间:2016-04-23 10:04:54

标签: c# unity3d

我有一个可收集的对象,它有一个附加粒子系统的子对象。当玩家遇到可收集对象时,应该销毁收集器并且应该播放粒子系统。当游戏对象放置在场景中时,下面的代码正常工作,但是一旦我预装它并在代码中实例化它 - 粒子系统就不再有效了。

有什么想法吗?干杯!

using UnityEngine;
using System.Collections;

public class collectable : MonoBehaviour {

    GameObject birdParticleObject; 
    ParticleSystem birdParticlesystem; 


    void Start () {

        birdParticleObject = GameObject.Find("BirdParticleSystem");
        birdParticlesystem = birdParticleObject.GetComponent<ParticleSystem>();
    }

    // Update is called once per frame
    void Update () {

    }


    void OnTriggerEnter(Collider other)
    {
        if(other.tag == "Player") {

            birdParticlesystem.Play();
            Destroy(gameObject);
    }

    }
}

1 个答案:

答案 0 :(得分:3)

我认为你的问题在于:

birdParticlesystem.Play();
Destroy(gameObject);

你告诉粒子系统玩,然后立即摧毁它的父母,它也会摧毁它。尝试:

     birdParticlesystem.Play();
     birdParticlesystem.transform.SetParent(null);
     Destroy(gameObject);

这将在销毁可收集对象之前从其父级中删除粒子系统。然后,您应该在粒子系统完成播放后Destroy(),否则它将留在场景中。