版本

menu_open
Wwise SDK 2021.1.14
设计工具插件库格式

此页面将介绍插件格式以及构成 Wwise 设计工具插件的各个部分。

库插件容器

Wwise 插件动态库可导出插件容器并列出库所提供的所有插件。该容器可通过一组宏添加到插件库中(如下所示):

// Library "MyPlugin.dll"
// MyPluginLib.h
AK_DECLARE_PLUGIN_CONTAINER(MyPlugin);
// MyPluginLib.cpp
AK_DEFINE_PLUGIN_CONTAINER(MyPlugin);
AK_EXPORT_PLUGIN_CONTAINER(MyPlugin);

这些宏将容器名称作为参数,其必须与库名称匹配(不含前缀或扩展名)。 随后可使用宏 AK_ADD_PLUGIN_CLASS_TO_CONTAINER 添加各个插件。 所有这些都将在创建插件时使用 wp.py 开发工具完成。

对于使用命令 wp.py new 创建的插件,可将声音引擎部分构建为静态库,并与 Wwise 设计工具插件动态库自动关联。 这一声音引擎静态库可重复用于在游戏中进行链接。

有关声音引擎插件实现的详细信息,请参阅 编写音频插件的声音引擎部分 章节。

设计工具插件结构

Wwise 设计工具插件分为两个部分:必需的后端部分(负责将插件的属性写入 SoundBank 并管理各种自定义数据)和可选的前端部分(创建为单独的类)。后一部分负责实现自定义图形用户界面。 两个部分通过 AK_ADD_PLUGIN_CLASS_TO_CONTAINER 宏单独添加到插件容器中。

以下章节对如何实现这两个部分进行了详细的说明:

有关如何使用插件属性的信息,请参阅 设计工具插件的模型 章节。

请求组件和服务

您可以使用 AK::Wwise::Plugin::RequestPropertySet 等 Request 接口(参见 Property Set 章节),来请求用于提供插件模型等服务的组件。 这些服务由 Wwise 设计工具在安装时提供给插件实例。

有些接口可添加必须实现并将由 Wwise 调用的纯虚拟方法。比如,在通过 AK::Wwise::Plugin::Source 获取时,需要实现 AK::Wwise::Plugin::Source::GetSourceDuration 方法,来将源所预期的最小和最大时长告知 Wwise 设计工具。

插件中要用作服务的组件全部前缀 Request。在这些服务处理插件所拥有的对象时,其会提供实例来作为成员变量添加到插件中以供服务方法使用(比如,将 AK::Wwise::Plugin::RequestPropertySet 用于 m_propertySet 对象)。 下面列出了可请求的各种组件:

  • AK::Wwise::Plugin::RequestHost :提供 m_host 以及用于与 Wwise 设计工具进行交互的函数。
  • AK::Wwise::Plugin::RequestLinkBackend :提供 m_backend 以及用于查询后端实例的函数。
  • AK::Wwise::Plugin::RequestLinkFrontend :提供 m_frontend 以及用于查询一系列前端实例的函数。
  • AK::Wwise::Plugin::RequestObjectMedia :提供 m_objectMedia 以及与媒体文件处理相关的函数。
  • AK::Wwise::Plugin::RequestObjectStore :提供 m_objectStore 以及与内部对象管理相关的函数。
  • AK::Wwise::Plugin::RequestPropertySet :提供 m_propertySet以及用于获取并设置属性值的函数。在从 \c AK::Wwise::Plugin::AudioPlugin 获取插件类时,将自动请求该组件。
  • \c AK::Wwise::Plugin::RequestUndoManager :提供m_undoManager` 以及用于记录自定义撤消事件和分组的函数。
  • AK::Wwise::Plugin::RequestWrite :提供 AK::Wwise::Plugin::DataWriter 所需的实例服务。在从 AK::Wwise::Plugin::AudioPlugin 获取插件类时,将自动请求该组件。
  • AK::Wwise::Plugin::RequestXml :提供 XML Reader 和 XML Writer(AK::Wwise::Plugin::XmlReaderAK::Wwise::Plugin::XmlWriter )所需的实例服务。在从 AK::Wwise::Plugin::CustomData 获取插件类时,将自动请求该组件。
备注: 其中有些服务会添加可选择性覆盖的通知处理程序方法。

对于所要实现的接口,不添加任何前缀。下面列出了可添加的各种接口:

  • AK::Wwise::Plugin::CustomData :添加用于管理自定义数据的函数。
  • AK::Wwise::Plugin::License :添加用于在 SoundBank 生成过程中检查授权的函数。
  • AK::Wwise::Plugin::MediaConverter :添加用于自定义媒体转码的函数。
  • AK::Wwise::Plugin::Notifications::Monitor :添加用于从声音引擎插件接收性能分析数据的函数。
  • AK::Wwise::Plugin::PropertyDisplayName :添加用于覆盖 XML 针对属性和命名值所定义显示名称的函数。
  • AK::Wwise::Plugin::SinkDevices :添加用于管理自定义音频设备的函数。
  • AK::Wwise::Plugin::Source :添加与源插件相关的函数。

故障排除

如果您遇到任何问题,可以参阅 Wwise 源插件和效果器插件故障排除指南 获取帮助。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅