Unity C# 4.5.2 2D уничтожить префаб созданной системы частиц

Я получил этот фрагмент кода, и он создает префаб системы частиц. У меня проблема в том, что клоны не уничтожаются после 5-секундной задержки. Любые советы приветствуются.

private ParticleSystem instantiate(ParticleSystem prefab, Vector3 position)
{
    ParticleSystem newParticleSystem = Instantiate(
        prefab,
        position,
        Quaternion.identity
        ) as ParticleSystem;

    if(newParticleSystem.gameObject != null)
    {
        Destroy(
            newParticleSystem.gameObject,
            newParticleSystem.startLifetime
            );
    }

    return newParticleSystem;
}

person jadkins4    schedule 23.07.2014    source источник


Ответы (1)


Ваш код зависит от того, что называется ParticleSystem, чтобы отслеживать, когда нужно уничтожить систему. Я бы сделал следующее:

private ParticleSystem instantiate(ParticleSystem prefab, Vector3 position)
{
    ParticleSystem newParticleSystem = Instantiate(
        prefab,
        position,
        Quaternion.identity
        ) as ParticleSystem;

    newParticalSystem.AddComponent<TimedDestroy>().delay = newParticleSystem.startLifetime;

    return newParticleSystem;
}

а затем добавьте этот скрипт в свой проект:

using UnityEngine;
public class TimedDestroy : MonoBehaviour
{
    public float delay;

    void Start()
    {
        Invoke("destruct",delay);
    }

    public void destruct()
    {
        Destroy(gameObject);
    }
}
person Joey Quinto    schedule 24.07.2014