纳金网

标题: Unity3d基础教程9-音频组件(Audio) [打印本页]

作者: paopao    时间: 2013-1-9 16:00
标题: Unity3d基础教程9-音频组件(Audio)
游戏音频在游戏开发中占有重要地位,可以提升游戏的真实效果。在unity中音频组件存放在菜单栏的Component->Audio中。如图,Audio Listener:音频***。Audio Source:音频源。Audio Reverb Zones:混响区。Audio Low Pass Filter (PRO only) :音频低通滤波器Audio High Pass Filter (PRO only) :音频高通滤波器Audio Echo Filter (PRO only) :音频回声滤波器Audio Distortion Filter (PRO only) :音频失真滤波器Audio Reverb Filter (PRO only) :音频混响滤波器Audio Ch***s Filter (PRO only) :音频合声滤波器在unity3d中音频是作为一个游戏组件出现的,也就是说一个音频源必须要依附在一个游戏物体上面。如果我们想在一个游戏场景中听到声音。场景中必须添加了一个带有Audio Listener(音频***)和一个带有Audio Source(音频源)的游戏物体。音频源是用来发出声音的,音频***是用来接收声音的。首先我们要在场景中添加一个Audio Listener(音频***),一般我们都会把这个***添加到我们的主相机上。打开unity3d,新建一个游戏项目。选择项目自带的Main Camera。在Inspector视图中,我们发现项目已经为我们添加好了一个***。好吧下面我们就来添加一个音频源。首先创建一个游戏物体GameObject->CreatEmpty。这是一个空物体。将物体命名为Audio1。选中Audio1点击菜单栏的Component->Audio->AudioSource如图:在Inspector视图中出现如图所示的AudioSource属性面板。Audio Clip :音频剪辑,将被播放的声音剪辑文件。Mute :静音。Bypass Effects :用来打开和关闭所有的特效。Play On Awake:是否在场景启动时开始播放声音。Loop :是否循环播放。Priority:优先权,确定场景所有并存的音频源之间的优先权。(Volume 音量,声音从距离音频***(Audio Listener)1个世界单位(1米)处有多响?Pitch 音调,改变音调(Pitch)值,可以减速/加速音频剪辑的播放。1是正常播放速度。3D Sound Settings:3D声音设置  Doppler Level:多普勒级别,决定了多少多普勒效应将被应用到这个音频信号源(如果设置为0,就是无效果)。Volume Rolloff:衰减模式。     Logarithmic Rolloff:对数衰减,当你接近的音频源,声音响亮,但是当你远离对象,声音下降显着快。Linear Rolloff:线性衰减,越是远离音频源的,你可以听到的声音越小。Custom Rolloff:自定义衰减,根据你设置的衰减图形,来自音频源的声音行为。   Min Distance:最小距离,在最小距离(MinDistance)之内,声音会保持最响亮。 在最小距离(MinDistance)之外,声音就会开始衰减。Pan Level:平衡调整级别,设置多少,3D引擎在音频源上有效果。Spread :扩散,设置3D立体声或者多声道音响在扬声器空间的传播角度。Max Distance:最大距离,声音停止衰减距离。超过这一点,它将在距离侦听器最大距离(MaxDistance)单位,保持音量,并不会作任何衰减。2D Sound Settings:2D声音设置Pan 2D:2D平衡调整,设置多少,引擎在音频源上有效果。了解了这些参数之后,我们就可以给我们的游戏场景添加第一个声音了。首先我们将一个声音源文件导入到游戏工程中。(unity3d支持的音频文件格式:.aif, .wav, .mp3, 和 .ogg)。如图。声音文件被unity识别之后将会在文件名称前面有一个喇叭的标志。选择我们的声音文件。在Inspector视图中出现一下属性:Audio Format :音频格式3D Sound :三维声音,如果启用,音乐将在3D空间中播放。Force to mono :强制单声道,如果启用,该音频剪辑将向下混合到单通道声音。Load Type: 加载类型。运行时Unity加载音频的方法。Decompress on load:加载时解压缩,加载后解压缩声音。使用于较小的压缩声音,以避免运行时解压缩的性能开销。Compressed in memory:在内存中压缩,保持声音在内存中是压缩的并在播放时解压缩。这有轻微的性能开销(尤其是OGG / Vorbis格式的压缩文件),因此使用这个为大文件。Stream from disc:从磁盘流,直接从磁盘流音频数据。这只使用了原始声音占内存大小的很小一部分。使用这个用于很长的音乐。Hardware Decoding:硬件解码,(仅iOS)用于iOS设备压缩的音频。使用苹果的硬件解码来减少CPU的密集解压缩。Gapless looping:无缝循环,(仅Android/iOS)当压缩一个完美的循环音频源文件(在一个非压缩的PCM格式)保持循环时,使用这个。Compression:压缩。根据项目的需求选择合适的参数进行调节,调节完成后,就可以将调节好的音频剪辑添加到场景中了。方法如下,选择我们添加了音频源的游戏物体,然后将调节好的音频剪辑拖放到Audio Clip选项中,或者点击Audio Clip选项后的选择按钮选择相应的音频剪辑。方法1:方法2:音频剪辑添加完成,勾选Play On Awake然后运行游戏。声音已经可以正常播放了。下面我们来看下怎么动态控制一段声音的播放和停止呢,首相我们要把Play On Awake的勾选去掉。查看一下unity的脚本帮助文档AudioSource.Play控制播放。AudioSource.Stop 控制停止。AudioSource.Pause 暂停。这样就简单了。我们只需要制作三个按钮,分别来控制着三个函数即可。新建一个JS脚本命名为OneAudio。代开脚本,输入一下代码。//定义一个音乐文件var music:AudioSource;function OnGUI(){      //播放      if(GUI.Button(new Rect(10,10,100,50),"播放音乐"))      {          //如果音乐没有播放          if(!music.isPlaying)          {             //播放音乐             music.Play();          }      }      //停止播放按钮      if(GUI.Button(new Rect(10,60,100,50),"停止音乐"))      {            //如果正在播放音乐               if(music.isPlaying)                 {                    //音乐停止播放                    music.Stop();                 }      }      //暂停播放按钮      if(GUI.Button(new Rect(10,110,100,50),"暂停音乐"))      {            //如果正在播放音乐               if(music.isPlaying)                 {                   //暂停音乐                    music.Pause();                 }      }}讲代码拖放到我们的摄像上。然后将我们添加了声音源文件的游戏物体拖放到music中运行游戏
作者: 艾西格亚    时间: 2013-1-9 22:41
音效方面的介绍教程很少,值得推荐!
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: xiongz    时间: 2013-1-10 09:29
不错·支持一下·   

作者: xiongz    时间: 2013-1-10 09:29
不错·支持一下·   

作者: 王者再临    时间: 2013-1-10 14:41
这个很实用,谢谢了
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: Zack    时间: 2013-1-10 22:04
感谢楼主的系列教程
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: 雅雅    时间: 2013-1-16 12:53
支持一下,这方面的教程很少
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: xiongz    时间: 2013-1-17 16:36
顶·楼主辛苦了                        

作者: 比巴卜    时间: 2013-1-21 11:20
支持一下,顶。。。。。

作者: 牛葵    时间: 2013-1-23 21:15
感谢楼主,都是些好东东
作者: wsy717846100    时间: 2013-8-12 15:49
这个确实不错
作者: libufan    时间: 2013-8-13 02:13
谢谢楼主分享
作者: 天空小飞龙    时间: 2013-8-13 09:06
好教程顶了




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5