我的苦恼冉 发表于 2020-12-11 17:40

unity—Fmod插件

前言

fomd是一套成熟的开源音频开发库,支持多种编程语言,同时也支持unreal engine,unity游戏引擎,并且,fomd官方对上述引擎的版本做了兼容性更新,不同版本的引擎,可以使用到对应版本的fmod库。详细了解请移步fmod官网。
本文阐述在unity中使用fmod,将其作为第三方开发插件使用。其实unity自带的音效系统,底层也是封装的fmod,但是为什么还需要自己接入?主要原因在于:
untiy封装音效,功能不够强大,游戏对音效追求高的,满足不了需求;unity的音效资源管理不够灵活;
一、导入fmod到uniyt项目

   在unity项目中导入fmod插件,不多罗嗦了,需要注意打包依赖的各种库文件。
二、配置fmod

Fmod项目配置
在sdudio project path中设置fmod studio 生成的.fspfo文件

生成平台配置
如果所有平台使用同一套资源(bank文件),使用single platform
build,如果不同的平台使用不同的资源,则选择multiple platform build。
生成多平台选项,在fmod studio中设置,添加其他平台,并选择路径,然后并生成。即可生成多平台的bank文件。

配置AssetBundle
选择inport type 选为asset boundle 并设置资源对应的路径。
三、unity中使用fmod



Bank加载器,用来加载bank文件,fmod event依赖bank,bank中包含了sample data(采样数据),sample data(采样数据)是fmod studio封装的资源文件。在使用event触发播放事件时,需要加载采样数据,如果游戏内存中没有加载对应的采样数据,模块会自动加载event所依赖的数据。所以,为了防止加载时间过长导致体验问题,需要使用bank加载器来加载资源。默认情况bank loader不会加载采样数据,只有勾选了preload sample data才会提前加载采样数据。但是,如果预加载了采样数据,这个数据会常驻内存,除非触发bank unload,进行资源卸载。监听者(fmod studio listener),如果需要在一个gameobject对象(一般放置在camera对象上)上播放fmod的音频内容,就必须要添加监听组建,否则播放时,音频播放的位置是在世界坐标的原点播放,fmod默认支持最大的。Fmod studio Emitter 事件触发器,在gameobject上添加此组件或者直接将fmod event拖到game object上,即可添加音频触发器。

a) Play event、stop event,播放触发事件、结束触发事件,默认可选事件包括。
None, ObjectStart, ObjectDestroy, TriggerEnter, TriggerExit, TriggerEnter2D, TriggerExit2D, CollisionEnter, CollisionExit, CollisionEnter2D, CollisionExit2D, ObjectEnable,ObjectDisable
注意选择Triggerxxxx事件时,需要指定触发类型,表示什么类型的对象与当前对象进行碰撞之后触发,其中collision tag表示指定的类型。
b) Event ,格式都是event:/xxxx,表示fmod studio中定义的事件。c) Override Attenuation 距离衰减,如果勾选,则表示此音频事件会有距离衰减,可配置最小和最大衰减距离。d) nitial parameter valus 指定初始化的参数,在事件触发之前传给事件触发器。e) Preload sample data 是否预加载音频采样数据。如果勾选,那么音频的采样数据将一直保留在内存。
四、注意事项
master bank.strings.bank和master bank.bank必须加载,作为stream模式载入的资源会自动加载此文件,但是作为assetbundle时,需要自己加载,切记event中必须指定一个默认事件,否则也是不能播放的
页: [1]
查看完整版本: unity—Fmod插件