版本

menu_open
Wwise SDK 2022.1.13
设计工具插件的后端

要为插件创建后端,需创建通过 AK::Wwise::Plugin::AudioPlugin 获取的类。 此基类可为 Wwise 设计工具插件提供各种基本方法,包括用于将数据写入 SoundBank 的函数。

插件的主模型为 Property Set ,不过 自定义数据 同样可由插件后端管理。

class BackendSourcePlugin
{
public:
// AK::Wwise::Plugin::AudioPlugin
const GUID& in_guidPlatform,
) const override;
// AK::Wwise::Plugin::Source
double& out_dblMinDuration,
double& out_dblMaxDuration
) const override;
};
MyPlugin, // Add to container "MyPlugin"
BackendSourcePlugin, // Class to add to the container
SoundEngineSourcePlugin // Sound engine plug-in to which this plug-in corresponds
);

生成声音包

您必须为插件编写代码,以便在需要的情况下将其当前设置存储到声音包中。 可以通过实现 AK::Wwise::Plugin::AudioPlugin::GetBankParameters() 方法来做到。

这些参数将作为数据块写入到 SoundBank 中。数据块将被直接从声音包加载到声音引擎插件的参数结构中。因此,在您写入参数时,必须保证其顺序与它们在声音引擎插件的参数结构中的声明顺序是一致的。更多信息请参阅 参数节点接口的实现

例如,考虑以下参数结构:

// 此效果器的参数结构。
struct AkFXSrcSineParams
{
AkReal32 fFrequency; // 频率(单位:赫兹)。
AkReal32 fGain; // 增益(单位:dBFS)。
AkReal32 fDuration; // 持续时间(仅当为有限值时才有效)。
};

以下 AK::Wwise::Plugin::AudioPlugin::GetBankParameters() 的实现将获取每个属性的当前值,然后使用适当方法将值写入,其中 AK::Wwise::Plugin::DataWriter 对象作为接收的参数。这些操作按照参数结构中各成员的定义顺序执行。

bool MySourcePlugin::GetBankParameters(
const GUID& in_guidPlatform,
AK::Wwise::Plugin::DataWriter& in_dataWriter) const
{
bool result = true;
result &= in_dataWriter.WriteReal32(m_propertySet->GetReal32(in_guidPlatform, "Frequency"));
result &= in_dataWriter.WriteReal32(m_propertySet->GetReal32(in_guidPlatform, "Gain"));
result &= in_dataWriter.WriteReal32(m_propertySet->GetReal32(in_guidPlatform, "Duration"));
return result;
}
备注: 若要获取属性的当前值,请使用 AK::Wwise::Plugin::PropertySet 提供的获取函数。 要求的类型必须与 XML 中指定的类型完全匹配。

关于写入不同数据类型的可用方法,更多信息请参阅 AK::Wwise::Plugin::DataWriter

管理授权

在生成 SoundBank 的过程中,Wwise 会查询插件通过 AK::Wwise::Plugin::License 接口实现的授权状态。插件可实现 AK::Wwise::Plugin::License::GetLicenseStatus ,并返回 AK::Wwise::Plugin::LicenseStatus 中的某个枚举值。另外,插件还可返回一条信息及信息的严重性级别,以便显示在 SoundBank 生成日志中。

通过返回 LicenseStatus_UnlicensedLicenseStatus_Expired,可以避免将相应插件包含在 SoundBank 中。

插件可以应用自有的授权验证方案。请注意,切勿在此函数中同步查询服务器。该函数需要立即返回答复。

若通过 Audiokinetic 注册插件,则可使用 Wwise 的授权系统。 使用以下实现代码查询 Wwise Project License 中的授权状态:

AK::Wwise::Plugin::LicenseStatus MyPlugin::GetLicenseStatus(
const GUID& in_guidPlatform,
char* out_pszMessage,
unsigned int in_uiBufferSize)
{
uint32_t uDaysToExpiry;
m_host.GetLicenseStatus(in_guidPlatform, eType, eStatus, uDaysToExpiry);
return eStatus;
}
Wwise Authoring Plug-ins - Main include file.
Interface used to write data during sound bank generation.
bool WriteReal32(float in_value)
Writes a 32-bit, single-precision floating point value.
float AkReal32
32-bit floating point
LicenseType
License type.
Definition: PluginDef.h:59
Wwise API for general Audio Plug-in's backend.
Definition: Source.h:91
Wwise API for general Audio Plug-in's backend.
Definition: AudioPlugin.h:133
Severity
Log message severity.
Definition: PluginDef.h:103
#define AK_ADD_PLUGIN_CLASS_TO_CONTAINER(ContainerName, WwiseClassName, AudioEngineRegisteredName)
(C++) Adds a Wwise Authoring plug-in and a Sound Engine plug-in to a plug-in container.
virtual bool GetSourceDuration(double &out_dblMinDuration, double &out_dblMaxDuration) const =0
Return the minimum and maximum duration, in seconds.
virtual bool GetBankParameters(const GUID &in_guidPlatform, DataWriter &in_dataWriter) const
Obtains parameters that will be written to a bank.
Definition: AudioPlugin.h:228
LicenseStatus
License status.
Definition: PluginDef.h:67

此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅