目录

Wwise SDK 2018.1.11
为 C++ 工程定义各种设置

使用声音引擎的 Release 配置时定义 AK_OPTIMIZED

必须在工程的的 Release(发布)配置中定义AK_OPTIMIZED 符号(在用于生成游戏零售版的配置中它可能被称为“Ship”、“Retail”等)。

此符号用于各种位置,以避免编译 Release 版本中的某些代码。

通信代码

Wwise 声音引擎支持 Wwise 和您的游戏之间进行通信,因此音频设计师可执行游戏内混音和性能分析。然而在 Release 配置中,出于性能方面的原因,不提供此通信。

如果您在游戏中启用通信功能,应从游戏的发布版本中弃用该代码,弃用的方法是使用 #ifndef AK_OPTIMIZED / #endif 将它括起来。

在使用声音引擎 API 函数的 wchar_t 版本时将 wchar_t 当作内建类型处理(仅适用于 Windows)

如果您调用 Wwise 声音引擎中使用 wchar_t 类型的若干个函数,您需要在工程设置中启用“Treat wchar_t as Built-in type”选项,以正确链接到声音引擎库。为此,转至 Configuration Properties > C/C++ > Language,并将“Treat wchar_t as Built-in Type”设置为“Yes”。此操作将指定“/Zc:wchar_t”编译标志。

然而,如果您不调用声音引擎中使用 wchar_t 类型的任一函数,则不需要加这个设置。注意,所有这些函数都有使用 char 类型的另一版本。

如果您调用使用 wchar_t 的函数,但忘记在工程中启用“Treat wchar_t as Built-in Type”设置,您将碰到类似下面的链接错误:未解释的外部符号 "enum AKRESULT __cdecl AK::SoundEngine::LoadBank(unsigned short const *,long,unsigned long &)",函数 AK::SoundEngine::LoadBank(const wchar_t *,long,unsigned long &) 被编译程序错误地解释为 AK::SoundEngine::LoadBank(unsigned short const *,long,unsigned long &)。

Warning: 我们建议您在工程中启用“Treat wchar_t as Built-in Type”设置。如果您不想启用它,请阅读下文。

您需要特别注意 AkOSChar 类型,在某些平台上它会被替换成 wchar_t。此类型与涉及磁盘 I/O 的方法一起使用。更具体地说,它由流管理器(AK::IAkStreamMgr )和底层 I/O( AK::StreamMgr::IAkFileLocationResolver )接口使用。

如果 Audiokinetic 的默认 Stream Manager(流管理器)在您的游戏中始终用作 I/O 管理器,在 AkOSChar 被替换成 wchar_t 的平台上您将别无选择,只有启用“Treat wchar_t as Built-in Type”设置。但是 Wwise 声音引擎通常是 Stream Manager 的唯一客户端。在此类情况下,没有必要在您的工程中启用“Treat wchar_t as Built-in Type”设置。

“Treat wchar_t as Built-in Type”设置对于底层 I/O API 不成问题,因为您通常不是调用它,而是实现它。

注意,当 AkOSChar 替换成 wchar_t 时,文件包底层 I/O 示例(请参见 文件包底层 I/O 实现 )调用声音引擎中使用 wchar_t 类型的一些方法。如果您想在工程中使用此示例而不启用“Treat wchar_t as Built-in Type”设置,在需要的地方,您必须修改它的某些部分,将 wchar_t 字符串正确地转换成 char 字符串。您可以使用 AKPLATFORM::AkWideCharToChar() 助手来实现这一点。它定义于 AK/Tools/Common/AkPlatformFuncs.h

有关如何针对 I/O 集成 Wwise 的更多信息,请参阅 流播放/流管理器

如果您将声音引擎库打包到 DLL 中,则在工程中定义 AKSOUNDENGINE_DLL(仅限于 Windows)

在 Windows 游戏中,如果您使用 DLL 包装与 Wwise 声音引擎相关的一切内容,例如示例 AkSoundEngineDLL 工程(见下文),您需要在依赖它的工程中定义 AKSOUNDENGINE_DLL(游戏可执行文件或者另一 DLL),以正确地导入声音引擎 API 的符号。

与 Wwise 声音引擎库静态链接的工程不得定义 AKSOUNDENGINE_DLL。

AkSoundEngineDLL 工程(仅限于 Windows)

此声音引擎集成纵览引导您逐步了解基本集成,包括多个模块各自的初始化和处理。如果您喜欢使用 DLL 工程示例,SDK 中就包含一个此示例。AkSoundEngineDLL 工程将某些集成任务打包到高级调用,例如“Initialize”和“Terminate”。本例中没有使用,因此您可以单独查看各个步骤,但您可以在游戏中使用 DLL 或它的修改版本。请参阅 AkCube 声音引擎集成工程示例 查看如何使用该 DLL 的示例。

Note: 必须安装 Visual Studio 2013 安装包才能在 Windows 上使用 AkSoundEngineDLL。

注意,AkSoundEngineDLL 工程中还包含Low-Level I/O(底层 I/O)的实现,如果需要,您可以自己替换它。有关底层 I/O 的更多信息,请参阅 Low-Level I/O