目次

サウンドエンジン各種モジュールの終了

イントロダクション

ゲームを終了できる状態になり、もはやオーディオが必要なくなったら、先に初期化したすべてのモジュールを終了させます。サンプルプログラムは、すべての終了コードを再編成するために以下の関数を使用しています:

void TermSoundEngine()
{
    ... Termination will be done here ...
}

終了は、初期化と反対の順序で行われます。

通信モジュールの終了

通信モジュールが初期化されている場合、これの終了から開始しましょう:

void TermSoundEngine()
{
#ifndef AK_OPTIMIZED
    //
    // Terminate Communication Services
    //
    AK::Comm::Term();
#endif // AK_OPTIMIZED

    (...)
}
Caution.gif
Caution: 他のモジュールの 前に、通信モジュールを終了させることが重要です。

ミュージックエンジンの終了

ミュージックエンジンが初期化されている場合は、サウンドエンジンの前にこれを終了させる必要があります。

void TermSoundEngine()
{
    (...)
    
    //
    // Terminate the music engine
    //
    
    AK::MusicEngine::Term();
    
    (...)
}

サウンドエンジンの終了

サウンドエンジン自体を終了させます:

void TermSoundEngine()
{
    (...)
    
    //
    // Terminate the sound engine
    //
    
    AK::SoundEngine::Term();
    
    (...)
}

ストリーミングマネージャの終了

次に、ストリーミングマネージャと低レベルI/Oを終了させます:

void TermSoundEngine()
{
    (...)
    
    // Terminate the streaming device and streaming manager
    
    // CAkFilePackageLowLevelIOBlocking::Term() destroys its associated streaming device 
    // that lives in the Stream Manager, and unregisters itself as the File Location Resolver.
    g_lowLevelIO.Term();
    
    if ( AK::IAkStreamMgr::Get() )
        AK::IAkStreamMgr::Get()->Destroy();
    
    (...)
}

メモリマネージャの終了

メモリマネージャのクライアントがすべて終了されたので、最後にメモリマネージャ自体を終了させます:

void TermSoundEngine()
{
    (...)
    
    // Terminate the Memory Manager
    AK::MemoryMgr::Term();
}

これで、サウンドエンジンに関連する全てのモジュールがクリーンアップされ、プログラムを終了する準備が整いました。続いて、Wwise 要素のゲームへの統合 をご覧になることをお勧めします。