Малфегал все это сказал, у тебя бесконечное число oop. Вы никогда не предоставляете баку контроль Unity, так что Update
может работать (и TimeToDestroy
уменьшается), поэтому он зависает. Либо используйте метод обновления в соответствии с рекомендациями Малфегала, либо сделайте Start
сопрограмму.
Путь сопрограммы
public float TimeToDestroy;
private ParticleSystem ParticleSystem;
private float MaxParticle;
private float OriginalTimeToDestroy;
private float OriginalMaxParticle;
private IEnumerator Start()
{
ParticleSystem = GetComponent<ParticleSystem>();
OriginalTimeToDestroy = TimeToDestroy;
MaxParticle = ParticleSystem.maxParticles;
OriginalMaxParticle = MaxParticle;
while (TimeToDestroy >= 0)
{
MaxParticle = Mathf.Lerp(OriginalMaxParticle, 0, OriginalTimeToDestroy);
ParticleSystem.maxParticles = Mathf.RoundToInt(MaxParticle);
yield return null;
TimeToDestroy -= Time.deltaTime;
}
Destroy(gameObject);
}
Update
способ
public float TimeToDestroy;
private ParticleSystem ParticleSystem;
private float MaxParticle;
private float OriginalTimeToDestroy;
private float OriginalMaxParticle;
private void Start()
{
ParticleSystem = GetComponent<ParticleSystem>();
OriginalTimeToDestroy = TimeToDestroy;
MaxParticle = ParticleSystem.maxParticles;
OriginalMaxParticle = MaxParticle;
}
private void Update()
{
if(TimeToDestroy >= 0)
{
TimeToDestroy -= Time.deltaTime;
MaxParticle = Mathf.Lerp(OriginalMaxParticle, 0, OriginalTimeToDestroy);
ParticleSystem.maxParticles = Mathf.RoundToInt(MaxParticle);
}
else
Destroy(gameObject);
}