Flexi声音系统
概述
Flexi声音系统(Flexi Sound System)使用Flexi音频引擎,这是一个通用的音频引擎,可以播放mp3,wav,ogg等常见音频格式,在编辑器中可以使用Flexi音频引擎添加2D/3D音效和动作音效。
声音系统配置
依次点击配置(Config) -> 项目设置(Project Settings),弹出项目配置页面后选择通用项目设置(General Project Settings),在声音设置(Sound Settings)中选择声音系统(Sound System)为FLEXI(修改后需要重启生效)。
配置声音系统后,在声音设置(Sound Settings)中点击设置路径(Settings Path)的 按钮,在弹出的文件浏览器(File Browser)窗口中选择声音资源存放的路径。
添加UI音效
UI音效一共有三类,分别为鼠标移入音效、鼠标移出音效、点击音效。
打开UI编辑器
在资源预览窗口空白处右键选择UI文件(UI File),双击该UI文件打开UI编辑器。
鼠标移入音效
鼠标在移入该控件范围内时会播放绑定的音效。
在UI编辑器中选中需要编辑的控件,然后在该控件的属性表中,选择InSound属性,在弹出的选择事件(Select Event)窗口中选择某个声音文件后点击OK(也可以双击声音文件)即可为该控件设置此属性。
此后鼠标移入该控件后便会触发该声音的播放。
鼠标移出音效
鼠标放置在该控件上方后再移出该控件的范围会播放绑定的声音。
修改控件的OutSound属性即可为控件添加对应的声音文件,具体添加方式和鼠标移入属性相同。
点击音效
点击该控件后会播放绑定的声音。
修改控件的ClickSound属性即可为控件添加对应的声音文件,具体添加方式和鼠标移入属性相同。
添加场景音效
使用编辑器添加场景音效
我们可以在场景中添加场景音效,在编辑器中添加场景音效的方式如下:
在大纲(Hierarchy)面板中选择需要添加场景音效的对象,然后点击添加组件按钮,添加声音组件(Sound Component)。
添加声音组件后,选中LSound并修改Sound Name属性,选择一个声音,若要进入场景后自动播放,可以勾选自动播放(Auto Play)选择框,进入场景后会在该对象所在位置处以场景音效方式自动播放选择的声音。
使用脚本添加场景音效
在脚本中添加场景音效需要获取一个添加音效的对象,我们可以预先在编辑器中需要加音效的对象的String Tag属性中填入标识。
此外添加一个脚本组件(LScript),并在脚本文件(Script File)中为该脚本组件配置对应的脚本。
然后就可以在脚本中利用填入的标识选中该对象,以下为通过String Tag获取对象的代码,第一个参数为对象的Tag,第二个参数为对象类型,该函数可以从指定类型的所有对象中找出拥有指定String Tag的对象。
--通过Tag查询对象
local function get_object_by_tag(tag_name, class_type_name)
local lscene = nx_value("lscene")
if not nx_is_valid(lscene) then
return nx_null()
end
if tag_name == nil then
return nx_null()
end
local tag_table = lscene:QueryObjectListByTag(tag_name, class_type_name)
local tag_count = #tag_table
if tag_count == 0 then
return nx_null()
elseif tag_count == 1 then
return tag_table[1]
elseif tag_count > 1 then
for i = 1, tag_count do
nx_log("info, get_object_by_tag, "
..nx_string(i) .." : "..nx_string(tag_table[i].StringTag))
end
return nx_null()
end
end
获得对象后我们就可以给其添加Sound组件,并将其加入场景中。
local lscene = nx_value("lscene")
local box = get_object_by_tag("soundbox", "LStaticMeshActor")
-- 添加音频对象
local sound3d = box:AddNewComponent("LSoundComponent", 0x00000000)
最后修改Sound对象的路径属性并加载该对象即可实现使用脚本在场景中添加场景音效。
sound3d.VisBase.SoundName = "%Resource%sound\\xxx.mp3"
sound3d.VisBase:Load()
sound3d.VisBase:Play()
添加动作音效
可以给角色动作绑定音效,当动作播放到指定动作帧时就会播放绑定的音效,添加动作音效方式如下:
找到我们需要添加音效的角色的资源文件。
双击资源文件后打开组合体编辑器,在左边的动作列表(Action List)中展示了所有的动作条目,其中动画序列类型的动作条目(粉色)以及蒙太奇类型的动作条目(紫色)可以附加声音资源(如图所示,当前选中的是跑的动作,类型为动画序列,因而添加完成后会在跑时触发音效)。
双击该动作条目进入动画编辑器,右击通知(Notify)进度条的空白部分,依次选择添加通知(Add Notify) -> 播放声音(Play Sound),添加一段音频。
在通知中添加声音后点击该段声音,在细项(Details)面板的事件名(Event Name)中为此段音频选择对应的事件即可在对应动作过程中播放。