>> ゲームプログラミング入門トップに戻る
今回はメモリに読み込んだ音声データを削除する方法を説明します。
LoadSoundMem関数で読み込んだ音声データは、
プログラム終了時に自動で削除されますが、手動で削除することもできます。
なぜそんなことをする必要があるのか?
たとえば、ゲームを作成していて、ステージ1だけでしか使わない音声があるとします。
ステージ2に進んでしまえば、もうその音声は不要になりますよね?
ですが、読み込んだままだとその音声データ分のメモリが無駄に使用されたままになっているわけです。
このままだとリソースの無駄ですので、不要になったときに削除してやることで、
無駄のないリソース管理が出来ます。
関数には、DeleteSoundMem関数を使います。
引数にはサウンドハンドルを指定します。
成功すると0、エラーだと-1が返ります。
削除したサウンドハンドルはもう使えなくなるのでご注意下さい。
以下はサンプルコードになります。
終了直前に音声データを削除しています。
どうせその後のDxLib_End関数が実行された時点で解放されるので、
このコードはほとんど意味がありませんが、
もっと大規模なゲームを作成したときには必ず必要になってきますので、覚えておいたほうが便利です。
また、メモリに読み込んだ音声ファイルを一度に削除するInitSoundMemという関数もあります。
引数はなしです。0が返ると成功、-1が返るとエラーです。
ステージ1の音声だけ全部読み込んで、ステージ2に移るときにこの関数で全部削除し、
またステージ2で必要な分をまとめて読み込む、などという時に便利ですね。
サウンド周りの講座は以上になります。
他にも細かい関数はたくさんあるので、リファレンス等を参照して下さい。
>> ゲームプログラミング入門トップに戻る
メモリに読み込んだ音声データを削除する
LoadSoundMem関数で読み込んだ音声データは、
プログラム終了時に自動で削除されますが、手動で削除することもできます。
なぜそんなことをする必要があるのか?
たとえば、ゲームを作成していて、ステージ1だけでしか使わない音声があるとします。
ステージ2に進んでしまえば、もうその音声は不要になりますよね?
ですが、読み込んだままだとその音声データ分のメモリが無駄に使用されたままになっているわけです。
このままだとリソースの無駄ですので、不要になったときに削除してやることで、
無駄のないリソース管理が出来ます。
関数には、DeleteSoundMem関数を使います。
引数にはサウンドハンドルを指定します。
成功すると0、エラーだと-1が返ります。
削除したサウンドハンドルはもう使えなくなるのでご注意下さい。
以下はサンプルコードになります。
#include "DxLib.h" // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } char key[256]; //サウンドハンドル取得。 int sh; sh=LoadSoundMem("bom.wav"); //描画先を裏画面に設定 SetDrawScreen(DX_SCREEN_BACK); while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll(key)==0){ if(key[KEY_INPUT_RETURN]==1){ PlaySoundMem(sh,DX_PLAYTYPE_BACK,TRUE); } } //音声データを削除。 DeleteSoundMem(sh); DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
終了直前に音声データを削除しています。
どうせその後のDxLib_End関数が実行された時点で解放されるので、
このコードはほとんど意味がありませんが、
もっと大規模なゲームを作成したときには必ず必要になってきますので、覚えておいたほうが便利です。
また、メモリに読み込んだ音声ファイルを一度に削除するInitSoundMemという関数もあります。
引数はなしです。0が返ると成功、-1が返るとエラーです。
ステージ1の音声だけ全部読み込んで、ステージ2に移るときにこの関数で全部削除し、
またステージ2で必要な分をまとめて読み込む、などという時に便利ですね。
サウンド周りの講座は以上になります。
他にも細かい関数はたくさんあるので、リファレンス等を参照して下さい。
>> ゲームプログラミング入門トップに戻る