转载请加上地址便于纠错 http://www.cnblogs.com/JeroChan/
借鉴公司内一位前辈的方法,音乐管理类,由于是小游戏,所以直接使用了动态创建&销毁的方法(Resources.Load(_Path)&Destroy(_obj))但如果游戏体量大的话可以优化下方法。
博客不常写是因为一些代码和思想实在拙劣,只好写写能复用的东西方便使用。
最近两天在学习对象池跟MVC框架的实现和一些系统音乐管理的优化,下篇博客加上。
上实例:
在Hierarchy面板创建一个空物体管理音频播放GameObject
在AudioManager里添加AudioSource组件(或代码动态修改,本例使用手动添加)
创建AudioManager类在AudioManager里
Resources目录下创建Audio并在里面存放音乐文件
##############################上代码#########################
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class AudioManager : MonoBehaviour { 6 7 static public AudioManager Instance; 8 private AudioSource sceneAudioSource; 9 10 private void Awake() 11 { 12 Instance = this; 13 } 14 void Start () { 15 sceneAudioSource = this.GetComponent<AudioSource>(); 16 } 17 18 public void SceneAudio(string _audioName,float _volume = 0.7f) 19 { 20 sceneAudioSource.clip = Resources.Load<AudioClip>("Audio/" + _audioName); 21 sceneAudioSource.volume = _volume; 22 sceneAudioSource.Play(); 23 } 24 25 public void EffectAudio(string _audioName, float _volume = 0.5f,float _delay = 0f) 26 { 27 GameObject tempObj = new GameObject(); 28 tempObj.transform.parent = this.transform.GetChild(0); 29 AudioSource tempAduioSource = tempObj.AddComponent<AudioSource>(); 30 tempAduioSource.clip = Resources.Load<AudioClip>("Audio/" + _audioName); 31 tempAduioSource.loop = false; 32 tempAduioSource.volume = _volume; 33 tempAduioSource.PlayDelayed(_delay); 34 Destroy(tempObj, tempAduioSource.clip.length); 35 } 36 }