using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
public class SoundEffectManager : MonoBehaviour {
static private AudioSource audioSource;
static private Dictionary<string, AudioClip> audios;
static private string targetPath = "SE";
private void Awake () {
audios = new Dictionary<string, AudioClip> ();
object[] files = Resources.LoadAll (targetPath);
foreach (AudioClip file in files) {
audios [file.name] = file;
}
}
public void Play (string filename, float delaySec = 0.0f, float volume = 1.0f) {
audioSource.volume = volume;
Observable.Timer(TimeSpan.FromMilliseconds(delaySec * 1000))
.Subscribe(_ =>
audioSource.PlayOneShot (audios [filename] as AudioClip));
}
public void Stop () {
audioSource.Stop ();
}
private static SoundEffectManager _instance;
public static SoundEffectManager Instance {
get {
if( _instance == null ) {
GameObject go = new GameObject ("SoundEffectManager");
_instance = go.AddComponent<SoundEffectManager>();
audioSource = go.AddComponent<AudioSource> ();
audioSource.playOnAwake = false;
DontDestroyOnLoad (go);
}
return _instance;
}
}
}