本文转载自:http://blog.csdn.net/microsoftMSDNNET/article/details/47273239
在实战项目中,音乐音效的好坏肯定是一个玩家对此项目评定的一个因素之一。所以,有必要对音乐音效做出一个统一的管理。
首先,我把几个音效放到了Resouces的Audios文件夹下,方便动态加载。
之后,利用一个非常简单的单例,建了一个空物体当做管理音乐的gameObject,将音乐音效统一管理起来,代码如下:
public class SoundManager:MonoBehaviour
{
public static readonly SoundManager instance=new SoundManager ();
private SoundManager ()
{
}
private Dictionary<string, AudioClip> _soundDictionary;
private AudioSource [] audioSources;
private AudioSource bgAudioSource;
private AudioSource audioSourceEffect;
void Awake()
{
instance = this;
_soundDictionary = new Dictionary<string, AudioClip> ();
AudioClip [] audioArray = Resources.LoadAll<AudioClip> ("AudioCilp");
audioSources = GetComponents<AudioSource> ();
bgAudioSource = audioSources [0];
audioSourceEffect = audioSources [1];
foreach (AudioClip item in audioArray)
{
_soundDictionary.Add(item.name,item);
}
}
public void PlayBGaudio(string audioName)
{
if (_soundDictionary.ContainsKey(audioName))
{
bgAudioSource.clip=_soundDictionary[audioName];
bgAudioSource.Play();
}
}
public void PlayAudioEffect(string audioEffectName)
{
if (_soundDictionary.ContainsKey(audioEffectName))
{
audioSourceEffect.clip=_soundDictionary[audioEffectName];
audioSourceEffect.Play();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
音效是一直在场景中不消失的,所以要保证切换场景的时候资源不会删除。
static bool isHaveAudio=false ;
public GameObject tempGameObject;
void Start()
{
if (!isHaveAudio)
{
tempGameObject=Instantiate(Resources.Load("SoundManage"))as GameObject;
isHaveAudio=true ;
}
DontDestroyOnLoad (tempGameObject);
}
使用:先执行加载预设(Start())脚本。
SoundManage是个预设,预设绑定SoundManager.cs脚本。