Unity-Wwise-Oculus踩坑笔记

记录下Unity集成Wwise和Oculus过程中的碰到的一些问题

官方Oculus Spatializer for Wwise 接入文档


Wwise导入OSP

Wwise安装目录下需要导入对应版本的dll文件(下载地址 👉Oculus Spatializer Wwise在这里插入图片描述
导入dll之后重启Wwise,混音器选项中才会有OSP
在这里插入图片描述


Unity中的Wwise插件导入OSP

在Assets/Wwise目录中,导入对应的发布平台的库文件(这一步跟着官方文档走就好了,注意Oculus是Android平台)
需要注意的是库文件存放路径,官方文档写的是拷贝到Wwise/Deployment下
在这里插入图片描述
新版本Wwise应该是修改了库文件的加载路径,这里看Unity中打印可以知道在这里插入图片描述这里路径配置不对的话,可能会报 Could not find plug-in dynamic library 的错误


Unity接入OSP

3.Unity接入OSP(下载地址 👉Oculus Spatializer Unity
下载官方提供的package包导入,在Project Settings / Audio中取消勾选Disable Unity Audio,并将Spatializer Plugin设置为OculusSpatializer
在这里插入图片描述
在集成Wwise的时候,会自动勾选Disable Unity Audio,一般情况下(只有Unity+Wwise),禁用Unity的音效系统是无可厚非的,但如果需要对接Oculus,则需要取消勾选,并设置Spatializer Plugin为OSP,否则会导致打出来的包在Oculus上运行没有声音。


打包配置

Project Settings - Wwise Editor - Asset Management,勾选Copy SoundBanks at pre-Build step。
打包的时候,会自动把对应平台的音效包导入到StreamingAssets中打包。


2022-1-22更新,Unknown game object ID问题

场景:

  1. 播放音效时,先注册GameObject AkSoundEngine.RegisterGameObj(go);
  2. 音效播放完毕后,回收GameObject并设置坐标 go.transform.localPosition = Vector3.zero;
  3. 反注册GameObject AkSoundEngine.UnregisterGameObj(go);

按上面的流程,会出现Unknown GameObject ID报错,这是由于GameObject反注册后试图修改它的位置。
Wwise会延迟同步Unity中GameObject的位置,这里需要延后反注册的时机。

分析:
通过 Wwise Profiler -> Capture Log 可以发现,设置localPosition后再UnregisterGameObj,实际执行顺序是先Unregister再SetPosition。
在这里插入图片描述
延迟一帧调用Unregister,会发现同一帧内,先执行SetPosition,再执行Unregister,这达到预期效果。
在这里插入图片描述
再延迟两帧调用Unregister,会发现SetPosition和Unregister依次在不同帧执行
在这里插入图片描述
官方提供的处理思路 👉 Unknown/Dead game object ID used in [FunctionName]


✍如果有不正确的地方,还望指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值