Exemplo n.º 1
0
    private bool TryGetItem(ParticleEffectName name, out ParticleSystem particle)
    {
        particle = null;
        if (_buffers.ContainsKey(name) == false || _prefabs.ContainsKey(name) == false)
        {
            return(false);
        }

        List <ParticleSystem> buffer = _buffers[name];

        foreach (ParticleSystem item in buffer)
        {
            if (item.isPlaying == false)
            {
                particle = item;
                return(true);
            }
        }

        if (buffer.Count < _maxCapacity)
        {
            ParticleSystem newItem = Instantiate(_prefabs[name]);
            buffer.Add(newItem);
            particle = newItem;
            return(true);
        }

        return(false);
    }
Exemplo n.º 2
0
 public void PlayEffect(Vector3 position, ParticleEffectName name)
 {
     if (TryGetItem(name, out ParticleSystem particle))
     {
         particle.transform.position = position;
         particle.Play();
     }
 }