U3D的里游戏音乐音效管理系统_简易版

转载注明原址  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 }

 

posted @ 2018-03-04 23:58  JeroChan  阅读(469)  评论(0编辑  收藏  举报