using UnityEngine;
using System.Collections;
public class SoundManager : MonoBehaviour {
private static SoundManager instance;
// Public static reference that can be accesd from anywhere
public static SoundManager Instance
{
get
{
// Check if instance has not been set yet and set it it is not set already
// This takes place only on the first time usage of this reference
if(instance==null)
{
instance = GameObject.FindObjectOfType<SoundManager>();
DontDestroyOnLoad(instance);
}
return instance;
}
}
void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(this);
}
else
{
if(this != instance)
{
Destroy(this.gameObject);
}
}
}
public delegate void AudioCallback();
public void PlaySoundWithCallback(AudioSource audio, AudioClip clip, AudioCallback callback)
{
audio.clip = clip;
audio.Play();
StartCoroutine(DelayedCallback(clip.length, callback));
}
private IEnumerator DelayedCallback(float time, AudioCallback callback)
{
yield return new WaitForSeconds(time);
callback();
}
}
using System.Collections;
public class SoundManager : MonoBehaviour {
private static SoundManager instance;
// Public static reference that can be accesd from anywhere
public static SoundManager Instance
{
get
{
// Check if instance has not been set yet and set it it is not set already
// This takes place only on the first time usage of this reference
if(instance==null)
{
instance = GameObject.FindObjectOfType<SoundManager>();
DontDestroyOnLoad(instance);
}
return instance;
}
}
void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(this);
}
else
{
if(this != instance)
{
Destroy(this.gameObject);
}
}
}
public delegate void AudioCallback();
public void PlaySoundWithCallback(AudioSource audio, AudioClip clip, AudioCallback callback)
{
audio.clip = clip;
audio.Play();
StartCoroutine(DelayedCallback(clip.length, callback));
}
private IEnumerator DelayedCallback(float time, AudioCallback callback)
{
yield return new WaitForSeconds(time);
callback();
}
}