public void RecycleSound(USound sound) { if (sound == BGM) { return; } int indx = 0; while (indx < _playingSounds.Length) { if (_playingSounds[indx] == sound) { break; } indx++; } _playingSounds.Erase(indx); if (_availableSounds.Length + _playingSounds.Length > maxSoundCapacity) { Destroy(sound.source); } else { _availableSounds.Push(sound); } }
public override void Dispose() { BGM = null; _oneShotSound = null; _playingSounds = null; _availableSounds = null; }
public USound PlaySound(AudioClip clip, float volume, float pitch, float pan, bool loop) { USound sound = GetAvaliableSound(); sound.Play(clip, volume, pitch, pan); sound.SetLoop(loop); return(sound); }
public void PlayOneShotSound(AudioClip clip, float volume) { if (_oneShotSound == null) { _oneShotSound = new USound(this); } _oneShotSound.source.PlayOneShot(clip, volume); }
public void PlayBackgroundMusic(AudioClip clip, float volume, bool loop = true) { if (BGM == null) { BGM = new USound(this); } BGM.Play(clip, volume, 1, 0); BGM.SetLoop(loop); }
private USound GetAvaliableSound() { USound sound = null; if (!_availableSounds.Empty) { sound = _availableSounds.Pop(); } if (sound == null) { sound = new USound(this); } _playingSounds.Push(sound); return(sound); }