public static AudioRemote PlaySound(string audioObjectName) { if (_instance == null) { _instance = new GameObject("AudioManager").AddComponent <AudioManager>(); _instance._audioObjects = Resources.LoadAll <AudioObject>("").ToList(); } if (_instance._audioObjectDictionary == null) { _instance.BuildDictionary(); } if (!_instance._audioObjectDictionary.ContainsKey(audioObjectName)) { Debug.LogWarning("No audio object with name: " + audioObjectName); return(null); } AudioObject ao = _instance._audioObjectDictionary[audioObjectName]; AudioSource source = Instantiate(_instance._audioSourcePrefab); source.clip = ao.GetRandomClip(); source.loop = ao.Looping; source.volume = ao.Volume; if (ao.RandomizeStartTime) { source.time = Random.Range(0.0f, source.clip.length); } source.Play(); if (ao.Persistant) { DontDestroyOnLoad(source.gameObject); } _instance._playingSources.Add(source); return(new AudioRemote(source, ao.FadeOutTime)); }