当游戏准备退出且不再需要音频时,就可以终止先前已经初始化的所有模块。我们的示例程序使用以下函数,来将所有终止代码重新组合:
void TermSoundEngine()
{
... 以下是模块终止代码 ...
}
终止各模块时,将按初始化的相反顺序进行。
如果通信模块已经初始化,就要首先被终止:
void TermSoundEngine() { #ifndef AK_OPTIMIZED // // 终止通信服务 // AK::Comm::Term(); #endif // AK_OPTIMIZED (...) }
|
Caution: 在其他模块 之前先终止通信模块非常重要。 |
如果音乐引擎已被初始化,则应先于声音引擎被终止。
void TermSoundEngine() { (...) // // 终止音乐引擎 // AK::MusicEngine::Term(); (...) }
然后终止声音引擎本身:
void TermSoundEngine() { (...) // // 终止声音引擎 // AK::SoundEngine::Term(); (...) }
接下来终止 Streaming Manager 和 Low-Level I/O:
void TermSoundEngine() { (...) // 终止流播放设备和流播放管理器 // CAkFilePackageLowLevelIOBlocking::Term() 销毁 Stream Manager 中 // 与其相关的流播放设备,并注销自己的 File Location Resolver 身份。 g_lowLevelIO.Term(); if ( AK::IAkStreamMgr::Get() ) AK::IAkStreamMgr::Get()->Destroy(); (...) }
现在 Memory Manager 的所有使用者都已终止,到了终止 Memory Manager 本身的时候了:
void TermSoundEngine() { (...) // 终止 Memory Manager AK::MemoryMgr::Term(); }
与声音引擎相关的一切模块都已终止,已经可以退出程序了。请继续参阅 将 Wwise 元素集成到游戏中 。