private AudioInstance GetAudioInstance(GameObject forSource, SoundBank forSoundBank) { AudioGroup audioGroup = GetAudioGroup(forSource); AudioInstance audioInstance = audioGroup.GetAudioInstance(forSoundBank); if (audioInstance.AudioSource == null) { audioGroup.RemoveAudioInstance(audioInstance); if (audioGroup.InstanceCount == 0) { _audioGroups.Remove(forSource); } return(null); } return(audioInstance); }
// I didn't make much about the audio souces configurable, this is where you'd change the defaults private AudioInstance GetOrAddAudioInstance(GameObject forSource, SoundBank soundBank) { AudioGroup audioGroup = GetOrAddAudioGroup(forSource); AudioInstance audioInstance = audioGroup.GetAudioInstance(soundBank); if (audioInstance == null) { audioInstance = new AudioInstance(); audioInstance.SoundBank = soundBank; audioInstance.AudioSource = forSource.AddComponent <AudioSource>(); ConfigureSourceForSound(audioInstance.AudioSource, soundBank); audioGroup.AddAudioInstance(audioInstance); } return(audioInstance); }
// I didn't make much about the audio souces configurable, this is where you'd change the defaults private AudioInstance GetOrAddAudioInstance(GameObject forSource, SoundBank soundBank) { AudioGroup audioGroup = GetOrAddAudioGroup(forSource); AudioInstance audioInstance = audioGroup.GetAudioInstance(soundBank); if (audioInstance == null) { audioInstance = new AudioInstance(); audioInstance.AudioSource = forSource.AddComponent <AudioSource>(); audioInstance.AudioSource.spatialize = soundBank.IsSpatial; audioInstance.AudioSource.spatialBlend = soundBank.IsSpatial ? 1.0f : 0.0f; audioInstance.AudioSource.volume = soundBank.VolumeScale; audioInstance.AudioSource.loop = soundBank.IsLooping; audioInstance.AudioSource.minDistance = soundBank.MinDistance; audioInstance.AudioSource.maxDistance = soundBank.MaxDistance; audioInstance.AudioSource.rolloffMode = AudioRolloffMode.Linear; audioInstance.AudioSource.outputAudioMixerGroup = soundBank.AudioMixerGroup; audioInstance.SoundBank = soundBank; audioGroup.AddAudioInstance(audioInstance); } return(audioInstance); }