首页 / UNITY / Unity3D音乐音效学习笔记
Unity3D音乐音效学习笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Unity3D音乐音效学习笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3403字,纯文字阅读大概需要5分钟。
内容图文
对于Unity3D的音乐音效这块一直没有好好的看过,现在准备好好的研究一下,并作为一个笔记记录下。
支持格式
在游戏中,一般存在两种音乐,一种是时间较长的背景音乐,一种是时间较短的音效(比如按钮点击,开枪音效等)。
Unity3D支持下面几种音乐格式:
- AIFF:适用于较短的音乐文件可用作游戏打斗音效
- WAV:适用于较短的音乐文件可用作游戏打斗音效
- MP3:适用于较长的音乐文件可用作游戏背景音乐
- OGG:适用于较长的音乐文件可用作游戏背景音乐
音乐组件
Unity3D中对音乐进行了封装,总体来说,要播放音乐需要3个基本的组件,下面我们来看看这3个组件。
AudioListener
一般我们创建场景时在主Camera上就会带有这个组件,该组件只有一个功能,就是监听当前场景下的所有音效的播放并将这些音效输出,如果没有这个组件,则不会发出任何的声音。好消息是,我们不需要创建多个该组件,一般场景中只需要在任意的GameObject上添加一个该组件就可以了,但是要保证这个GameObject不被销毁,所以一般按照Unity的做法,在主摄像机中添加即可。
AudioSource
控制一个指定音乐播放的组件,可以通过属性设置来控制音乐的一些效果,可以查看官方的文档:http://docs.unity3d.com/Manual/class-AudioSource.html。
下面列出一些常用的属性:
- AudioClip:声音片段,还可以在代码中去动态的截取音乐文件。
- Mute:是否静音。
- Bypass Effects:是否打开音频特效。
- Play On Awake:开机自动播放。
- Loop:循环播放。
- Volume:声音大小,取值范围0.0 到 1.0。
- Pitch:播放速度,取值范围在 -3 到 3 之间 设置1 为正常播放,小于1 为减慢播放 大于1为加速播放。
AudioClip
当我们把一个音乐导入到Unity3D中,这个音乐文件就会变成一个AudioClip对象,即我们可以直接将其拖拽到AudioSource的AudioClip属性中,也可以通过Resources或AssetBundle进行加载,加载出来的对象类型就是AudioClip。
看例子
播放音乐的简单例子
这个例子我们直接通过简单的拖拽的点击不写一行代码实现音乐的播放。
新建一个场景,给Main Camera添加一个Audio Source组件,并将我们的音乐文件拖拽到Audio Clip属性上,勾选Loop使其可以进行循环播放。
运行程序就可以听到声音了。
3D音效效果
Unity为啥要把音乐播放拆分成这3个组件呢?当然是有原因的,个人认为其中最重要的就是实现3D音效效果。
如果我们将Audio Listener看作一双耳朵的话就可以很好的理解什么是3D音效效果了,Unity会根据Audio Listener对象所在的GameObject和Audio Source所在的GameObject判断一下距离和位置来模拟真实世界中的音量近大远小的效果。
首先,找到我们导入的音乐文件,必须设置为3D音乐,默认就是。当然如果是2D的音乐就不会有近大远小的效果了。
我们新建一个场景,添加3个GameObject,给第一个添加一个Audio Listener组件,其它两个添加Audio Source组件并赋予两个音乐文件。
移除Main Camera上的Audio Listener组件,按照下面的位置摆放一下这3个组件。
运行游戏,返回Scene视窗,拖拽Audio Listener组件的位置,就可以感受到好比在两个音响之间移动的效果了。
Resources加载
这里我们看看通过代码如何实现音乐的控制和播放。
我们把我们的音乐文件放到Resources文件夹中,新建一个场景和一个GameObject,并将下面的脚本添加到这个GameObject上即可:
1 using UnityEngine; 2 3 public class ResourcesDemo : MonoBehaviour 4 { 5 private AudioSource _audioSource; 6 7 void Start() 8 { 9 // 添加 Audio Source 组件 10 _audioSource = this.gameObject.AddComponent<AudioSource>(); 1112//加载 Audio Clip 对象13 AudioClip audioClip = Resources.Load<AudioClip>("bgm"); 1415//播放16 _audioSource.loop = true; 17 _audioSource.clip = audioClip; 18 _audioSource.Play(); 19 } 20 }
运行就可以听到声音了。
AssetBundle加载
音乐在AssetBundle中又该如何控制和播放呢?
首先我们需要通过脚本对文件进行打包。
1 using UnityEditor; 2 using UnityEngine; 3 4 public class AssetBundleCreator 5 { 6 [MenuItem("Demo/CreateAssetBundle")] 7privatestaticvoid CreateAssetBundle() 8 { 9 BuildPipeline.BuildAssetBundle(null, new [] 10 { 11 AssetDatabase.LoadMainAssetAtPath("Assets/Audio/bgm.ogg"), 12 AssetDatabase.LoadMainAssetAtPath("Assets/Audio/sound.ogg") 13 }, 14 Application.streamingAssetsPath + "/Audio.assetbundle", 15 BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets | BuildAssetBundleOptions.UncompressedAssetBundle, 16 BuildTarget.StandaloneWindows64); 17 } 18 }
接下来新建一个场景和一个GameObject,并将下面的脚本添加到这个GameObject上即可:
1 using UnityEngine; 2 3 public class AssetBundleDemo : MonoBehaviour 4 { 5 private AudioSource _audioSource; 6 7 void Start() 8 { 9 AssetBundle assetBundle = AssetBundle.CreateFromFile(Application.streamingAssetsPath + "/Audio.assetbundle"); 1011//添加 Audio Source 组件12 _audioSource = this.gameObject.AddComponent<AudioSource>(); 1314//加载 Audio Clip 对象15 AudioClip audioClip = assetBundle.Load("sound", typeof(AudioClip)) as AudioClip; 1617//播放18 _audioSource.loop = true; 19 _audioSource.clip = audioClip; 20 _audioSource.Play(); 21 } 22 }
源文件下载
http://pan.baidu.com/s/1eQCW7AE
原文:http://www.cnblogs.com/hammerc/p/4784688.html
内容总结
以上是互联网集市为您收集整理的Unity3D音乐音效学习笔记全部内容,希望文章能够帮你解决Unity3D音乐音效学习笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。