Единство - Система частиц - Количество частиц - PullRequest
0 голосов
/ 30 сентября 2018

Кто-нибудь знает, есть ли у 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 голосов
/ 30 сентября 2018

Точная функция, которую вы запрашиваете, заключается не в ее построении, НО:

Вы можете узнать текущие частицы, отображаемые системой, чтобы вы могли создать счетчик, который накапливает число, или, если вы знаете,«отображение времени» вы можете сделать математику.

Зная текущие частицы: ParticleSystem.particleCount https://docs.unity3d.com/ScriptReference/ParticleSystem-particleCount.html

0 голосов
/ 30 сентября 2018

Вы можете использовать ParticleSystem.particleCount, чтобы вернуть текущее количество частиц.Если это не дает вам нужного количества частиц, используйте функцию ParticleSystem.GetParticles, поскольку она возвращает только текущее количество живых частиц.Ниже приведен пример для них обоих:

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);
}
...