public void PlayGeneric(string unboundClipName) { if (unboundClips.Length == 0) { return; } else if (unboundClips.Where(r => r.clip.name == unboundClipName).FirstOrDefault() == null) { return; } GameObject emitterObject; if (genericEmitters.Count != 0 && genericEmitters.Where(r => !r.gameObject.activeInHierarchy).FirstOrDefault() != null) { emitterObject = genericEmitters.Where(r => !r.gameObject.activeInHierarchy).FirstOrDefault().gameObject; } else { emitterObject = Instantiate(genericAudioEmitterPrefab, transform); genericEmitters.Add(emitterObject.GetComponent <AudioEmitter>()); } AudioEmitter emitter = emitterObject.GetComponent <AudioEmitter>(); UnboundClipClass unboundClipClass = unboundClips.Where(r => r.clip.name == unboundClipName).FirstOrDefault(); if (unboundClipClass == null) { return; } emitter.ChangeClip(unboundClipClass.clip); emitter.priority = unboundClipClass.priority; emitter.dampenToPercent = unboundClipClass.dampenAmount; emitterObject.SetActive(true); emitter.PlayAudio(); }