Wwise+Unreal的一些记录

虚幻啊。

先记个当下遇见最坑的。

AkAudioDevice里,有的PostEvent方法会用到FOnAkPostEventCallback类的参数,然后编译器找不到这个类的定义。

找了好久好久,最后发现它是在AkGameplayTypes.h中定义的一个委托……

其实回过头来看,带On的命名的东西是委托的几率很大,但是也太坑了。虚幻里的委托既能当类,又能当对象,还能当函数。真tmnb。还是学E不精,下次遇见没有定义的考虑下委托、匿名函数、C++的template模板等可能性。

UE4里,Wwise集成中的AkComponent的PostEvent方法,最终会引用AkAudioDevice中的PostEvent。然后后者又会引用AkSoundEngine的PostEvent方法。

在这传输过程中,AkAudioDevice的这个PostEvent会固定附加FAkComponentCallbackManager::AkComponentCallback方法,然后,又把真正的C++或蓝图定义的委托,结合CallbackType的flag值和GameObjId,一起打包成AkComponentCallbackManager中的FAkFunctionPtrEventCallbackPackage类或FAkBlueprintDelegateEventCallbackPackage类……然后通过PostEvent的pCookie方式,传给刚才的AkComponentCallback方法,这个方法再从打包成的回调类中,调用回调类中的HandleAction,取出回调类的数据进行使用……

这个设计真的好tm绕。

这都是Wwise自身SDK的一些逻辑,可能不用特别在意,平时使用还是就用他的各种接口就好了。

posted @   零楚L  阅读(379)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示