using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SoundManager : SingletonMono<SoundManager>
{
private AudioSource bgMusic; // 背景音乐组件
private AudioSource soundMusic; // 音效组件
public bool IfBgMute, IfSoundMute; //背景音乐是否静音,音效是否静音
private Dictionary<string, AudioClip> audioDic = new Dictionary<string, AudioClip>(); //audio字典
protected override void Awake()
{
base.Awake();
DontDestroyOnLoad(this.gameObject);
bgMusic = transform.Find("BGM").GetComponent<AudioSource>();
soundMusic = transform.Find("Sound").GetComponent<AudioSource>();
}
public AudioClip GetAudioClip(string name) //加载音效资源
{
if (audioDic.ContainsKey(name))
return audioDic[name];
var AudioClip = Resources.Load<AudioClip>("AudioClips/" + name);
audioDic.Add(name, AudioClip);
return AudioClip;
}
//播放背景声音
public void PlayBgMusic(string audioName, bool isLoop = false)
{
bgMusic.clip = GetAudioClip(audioName);
bgMusic.loop = isLoop;
soundMusic.mute = IfBgMute;
bgMusic.Play();
}
//播放音效
public void PlaySoundMusic(string audioName, bool isLoop = false)
{
soundMusic.clip = GetAudioClip(audioName);
soundMusic.loop = isLoop;
soundMusic.mute = IfSoundMute;
soundMusic.Play();
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SingletonMono<T> : MonoBehaviour where T: SingletonMono<T>
{
public static T Instance { get; set; }
protected virtual void Awake()
{
if (Instance != null)
{
Destroy(gameObject);
}
else
{
Instance = this as T;
}
}
}