Unity-粒子系统-粒子计数

时间:2018-09-30 05:08:10

标签: c# unity3d particles

是否知道Unity是否可以计算粒子系统发射了多少粒子?所以我可以检查是否有排放物,例如:

public ParticleSystem mySystem;
private int currentParticleCount;
private int lastParticleCount;

void Start () {
    lastParticleCount = mySystem.getEmissionCount();
}

void Update () {
    currentParticleCount = mySystem.getEmissionCount();
    if(currentParticleCount>lastParticleCount) {
        DoStuff();
    }
    lastParticleCount = currentParticleCount;
}

2 个答案:

答案 0 :(得分:2)

您可以使用ParticleSystem.particleCount返回当前的粒子数量。如果那不能为您提供适当数量的粒子,请使用ParticleSystem.GetParticles函数,因为该函数仅返回当前数量的 alive 粒子。下面是两个示例:

private ParticleSystem ps;

// Use this for initialization
void Start()
{
    ps = GetComponent<ParticleSystem>();
}

// Update is called once per frame
void Update()
{
    Debug.Log("Particles Count: " + ps.particleCount);
    Debug.Log("Particles Alive Count: " + GetAliveParticles());
}

int GetAliveParticles()
{
    ParticleSystem.Particle[] particles = new ParticleSystem.Particle[ps.particleCount];
    return ps.GetParticles(particles);
}

答案 1 :(得分:0)

您要的确切功能不是构建功能,而是:

您可以知道系统当前显示的粒子,因此可以创建一个可累计数字的计数器,或者,如果您知道“显示时间”,就可以进行数学计算。

了解当前粒子: ParticleSystem.particleCount https://docs.unity3d.com/ScriptReference/ParticleSystem-particleCount.html