首页 > 代码库 > Unity3D音频播放 动态加载组件
Unity3D音频播放 动态加载组件
网上大多数Unity教程只讲述了如何在Unity里播放音乐,如何通过拖拽添加音频文件之后就没有继续了
但在游戏中有时候一个对象需要播放好几种声音,这个时候我们就需要用代码进行控制,教程上推拽给AudioClip赋值的方法就显得不是那么实用了
所以本篇将重点讲述如何在Unity中创建一个最简化的音频播放器,并通过代码进行动态加载与播放
①创建一个Empty对象 点击菜单栏[GameObject]–>Create Empty 命名为Audio
②选取这个空对象 点击菜单栏[Component]–>Audio–>Audio Source 这样就在场景里创建了如图所示的一个喇叭
③创建资源文件夹命名为Resources,并把BeiTown.mp3文件拖入其中,注意一定要将资源文件夹名设为Resources,否则Resources.Load方法将无法找到资源文件
④创建脚本
接下来开始创建脚本
MusicPlayer.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | using UnityEngine; using System.Collections; public class MusicPlayer : MonoBehaviour { public AudioSource Sound; public void Play(string str) { Sound.clip = (AudioClip)Resources.Load(str, typeof(AudioClip));//调用Resources方法加载AudioClip资源 Sound.Play(); } } |
MusicTest.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using UnityEngine; using System.Collections; public class MusicTest : MonoBehaviour { private MusicPlayer music; void Start () { music = (GetComponent("MusicPlayer") as MusicPlayer);//获取播放器对象 } void OnGUI() { if(GUI.Button(new Rect(10, 10, 100, 50), "PLAY")){ music.Play("BeiTown");//调用播放器Play方法 } } } |
⑤将脚步绑定到AudioSource音源对象上,并将Audio对象赋给MusicPlayer脚本里的Sound对象,以便MusicPlayer对其进行操作
⑥点击播放按钮
这个时候就能听到声音了,但是细心的朋友会发现左右耳朵的声音并不是一样大的,这是因为我们的声音监听绑定在了主摄像机上,这就照成了声音可能是从一个方向传来的3D效果,如果不想要这个效果也好办
选取Audio对象,点击菜单栏[Commponent]–>Audio–>Audio Listener
为Audio对象创建一个声音监听,并勾选它
重新点击播放按钮,这个时候发现依然没有改变,控制台出现如下警告:There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.
不要着急,Main Camera 主摄像机上的Audio Listen 取消勾选了么
Unity默认一个scene里同时只能有一个声音监听,其实这也很好理解,在自然情况下,人类也不可能做到两只耳朵听取不同范围的声音(借助设备除外)
将其他的Audio Listener取消后,只保留Audio上的Audio Listener,点击Play按钮,一切正常!
其他的暂停,停止,等等操作这里就不再添加了,感兴趣的朋友可以自己参考API进行操作,本文主要描述如何动态加载一首音乐,并将该类进行封装,同时最简化的代码也利于大家观看理解。
今天就到这里吧,意在分享,与君共勉之。