游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放还可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种试用与比较短的游戏音乐,如开枪,打怪 时“砰砰”一瞬间播放的游戏音效。今天MOMO将用下面的例子带盆友们去剖析Unity3D游戏音乐与音效的播放。
Unity3D游戏引擎一共支持4个音乐格式的文件
.AIFF 适用于较短的音乐文件可用作游戏打斗音效
.WAV 适用于较短的音乐文件可用作游戏打斗音效
.MP3 适用于较长的音乐文件可用作游戏背景音乐
.OGG 适用于较长的音乐文件可用作游戏背景音乐
在场景中创建一个空的游戏对象。
GameObject -> CreateEmpty 创建成功后我命名为audio。
给audio添加一个AudioSource属性,这个属性非常的重要,Unity播放音乐主要就是要靠这个东西。
Component -> Audio – > Audio Source。
找一个音乐文件,我这里使用了一个.mp3音乐文件,我命名为0.mp3 如下图所示将它拖动到右侧Audio Clip处。
我们发现 Audio Source 有很多设置的属性,那么MOMO将一些比较重要的属性诺列出来。
AudioClip :声音片段,还可以在代码中去动态的截取音乐文件。
Mute : 是否静音
Bypass Effects: 是否打开音频特效
Play On Awake: 开机自动播放
Loop:循环播放
Volume: 声音大小,取值范围0.0 到 1.0
Pitch:播放速度,取值范围在 -3 到 3 之间 设置1 为正常播放,小于1 为减慢播放 大于1为加速播放。创建一个脚本我命名为audio.cs 用来音乐的播放。本章将实现3个按钮 点击实现 播放音乐、 停止音乐、 暂停音乐 ,与一个横向拖动条通过手指的拖动实现动态修改音乐声音。
audio.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 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 64 65 66 |
using UnityEngine; using System.Collections; public class audio : MonoBehaviour { //音乐文件 public AudioSource music; //音量 public float musicVolume; void Start() { //设置默认音量 musicVolume = 0.5F; } void OnGUI() { //播放音乐按钮 if (GUI.Button(new Rect(10, 10, 100, 50), "Play music")) { //没有播放中 if (!music.isPlaying){ //播放音乐 music.Play(); } } //关闭音乐按钮 if (GUI.Button(new Rect(10, 60, 100, 50), "Stop music")) { if (music.isPlaying){ //关闭音乐 music.Stop(); } } //暂停音乐 if (GUI.Button(new Rect(10, 110, 100, 50), "Pause music")) { if (music.isPlaying){ //暂停音乐 //这里说一下音乐暂停以后 //点击播放音乐为继续播放 //而停止以后在点击播放音乐 //则为从新播放 //这就是暂停与停止的区别 music.Pause(); } } //创建一个横向滑动条用于动态修改音乐音量 //第一个参数 滑动条范围 //第二个参数 初始滑块位置 //第三个参数 起点 //第四个参数 终点 musicVolume = GUI.HorizontalSlider (new Rect(160, 10, 100, 50), musicVolume, 0.0F, 1.0F); //将音量的百分比打印出来 GUI.Label(new Rect(160, 50, 300, 20), "Music Volueme is " + (int)(musicVolume * 100) + "%"); if (music.isPlaying){ //音乐播放中设置音乐音量 取值范围 0.0F到 1.0 music.volume = musicVolume; } } } |
将audio.cs 绑定在摄像头上,将audio游戏对象拖动赋值给Music 这个AudioSource这个对象。这里强调一下AudioListenr ,它音频监听器,用来监听音乐文件的播放。这是一个重要的属性,一定要勾选,只有勾选后才可以进行音乐的播放。
build and run 运行我们这个游戏Demo,一切功能完美实现,哇咔咔~
最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,大家一起学习一起进步,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。今天心里有点不高兴! 5555555555。就这样晚安~
下载地址:http://vdisk.weibo.com/s/abxs8
补充:
最近有朋友问我如何切换场景Unity音频不关闭,其实做法非常简单。如下图所示,你的声音组件会放在声音对象中,因为切换场景的时候声音对象会自动销毁,所以声音就会关闭。所以如果你的声音组件不被销毁掉,哪么你的声音就会连续播放了。
代码就是使用DontDestroyOnLoad()方法就可以切换场景不施放对象了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public GameObject audio; void Start () { DontDestroyOnLoad(audio); } void OnGUI() { if(GUILayout.Button("NEXT")) { Application.LoadLevel("Scene1"); } } } |
- 本文固定链接: https://www.xuanyusong.com/archives/550
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
Pitch 是播放速度??? 竟然没人说你这个是错的
雨松大佬,请问一下videoplayer中audio output mode = direct怎么播放声音。选audiosources时,播放视频时声音卡顿怎么解决,急等
我使用AudioSource播放声音也卡
pitch是播放速度?
现在真机调试安装到iOS10播放的声音特别小,ios9正常,请问有没有解决方法
unity5.3.5,android包 一打开程序 就会 自动中断后台音乐 是怎么回事呢 求解
momo,我现在用unity5.3.5,android包出现游戏中如果接电话或者收到任何推送,回到游戏时音效都没声音了,强制退出游戏重新进入后才好,求解哦!
哥们,我也遇到这个问题了,找到解决方法了吗?
我也遇到这个问题了。请问有找到解决办法吗?