SetUseASyncLoadFlag

非同期読み込みを行うかどうかを設定する

SetUseASyncLoadFlag Flag

int Flag : 非同期読み込みを行うかどうか
( TRUE:非同期読み込み FALSE:同期読み込み( デフォルト ) )

(プラグイン / モジュール : DxLibW)

解説

ゲームソフトではよくロード中に「Now Loading」と表示しながら、その文字が動いていたり、何か画面が動いていたりします。

それはゲームに必要な情報をディスクから読み込んでいる間も平行して演出用のプログラムが動いているからです。

DXライブラリのデータ読み込み関数である LoadGraphLoadSoundMem は標準動作ではデータを読み込み終わるまで関数から出てこない「同期読み込み」ですが、
この関数を使って設定を「非同期読み込み」にすると、データの読み込みが終わる前に関数から出てきます。

当然読み込みが終わっていないので別途 CheckHandleASyncLoadGetASyncLoadNum で読み込みが終わるのを確認してからではないとハンドルを使えるようにはなりませんが、
読み込みが終わるまでの間、前述の「Now Loading」のアニメーションなどを行うことができます。

非同期読み込みを使用して読み込んでいる間も画面上で演出を行うことで、
主にプレイヤーが「データが読み込み終わるまで止まった画面を見続けなければならない」という状態を回避することができます。

因みに非同期読み込みはそれなりに負荷の高い処理なので、
パワーがあまり無いCPU( ノートパソコン搭載のCPUや、その中でも特にシングルコアのCPU )では、
非同期読み込みの間ガクッガクッと度々高負荷で動きがぎこちなくなると思います。

なので、ゲームのプレイ中に次のステージのデータを先読みしてステージをクリア後読み込み画面無しで次のステージに移行!
みたいな格好良いことをしようと思った場合は、それなりに性能の高いCPUではないとスムーズに処理されないと考えてください。

<使い方>

非同期読み込みを行いたいファイルを読み込む前に SetUseASyncLoadFlag( TRUE ) ; を実行して、
非同期読み込み設定にします。

その上で後述の非同期読み込みに対応した関数を使用してデータ読み込みを行うことで非同期読み込みを行うことができます。

非同期読み込みが完了したかどうかは CheckHandleASyncLoad か、GetASyncLoadNum を使用して確認します。

CheckHandleASyncLoad は特定のハンドルの非同期読み込みが完了したかどうかをチェックすることができ、
GetASyncLoadNum は行っている非同期読み込みの数を取得することができます。

ハンドル別にチェックしたいときは CheckHandleASyncLoad、
全体の非同期読み込みが完了しているかだけチェックしたいときは GetASyncLoadNum を使う、といった感じです。


尚、非同期読み込みを開始してみたもののファイルが無かったりメモリが足りなかったりして読み込みが失敗した場合は、
ハンドルは自動的に削除されます。

その場合は CheckHandleASyncLoad の戻り値が -1 になりますので、読み込みが失敗したかどうかはそれで判断してください。

<非同期読み込みに対応している関数>

( 主な関数 )

MakeGraph, MakeScreen, LoadGraph, LoadDivGraph, LoadBlendGraph,

LoadMask, LoadDivMask,

LoadSoundMem, LoadMusicMen,

MV1LoadModel,

CreateFontToHandle,

LoadSoftImage,

LoadPixelShader, LoadVertexShader

FileRead_open, FileRead_seek, FileRead_read

( リファレンスには載っていない関数も含めた一覧 )

MaekGraph, MaekScreen, LoadGraph, LoadReverseGraph, LoadDivGraph, LoadReverseDivGraph, LoadBlendGraph,

ReloadGraph, ReloadDivGraph, ReloadReverseGraph, ReloadReverseDivGraph,

CreateGraphFromMem, CreateDivGraphFromMem, ReCreateGraphFromMem, ReCreateDivGraphFromMem,

CreateGraphFromBmp, CreateDivGraphFromBmp, ReCreateGraphFromBmp, ReCreateDivGraphFromBmp,

CreateGraphFromGraphImage, CreateDivGraphFromGraphImage, ReCreateGraphFromGraphImage, ReCreateDivGraphFromGraphImage,

CreateGraphFromBaseImage, CreateDivGraphFromBaseImage, ReCreateGraphFromBaseImage, ReCreateDivGraphFromBaseImage,

CreateGraphFromSoftImage, CreateDivGraphFromSoftImage, ReCreateGraphFromSoftImage, ReCreateDivGraphFromSoftImage,

MakeMask, LoadMask, LoadDivMask,

LoadSoftImage, LoadSoftImageToMem,

LoadVertexShader, LoadVertexShaderFromMem, LoadPixelShader, LoadPixelShaderFromMem,

LoadSoundMem, LoadSoundMem2, LoadSoundMemBase, LoadSoundMemToBufNumSitei,

LoadSoundMemByMemImageBase, LoadSoundMemByMemImage, LoadSoundMemByMemImage2,

LoadSoundMemByMemImageToBufNumSitei, LoadSoundMem2ByMemImage, LoadBGM,

LoadSoftSound, LoadSoftSoundFromMemImage,

LoadMusicMem, LoadMusicMemByMemImage,

MV1LoadModel,

CreateFontToHandle,

FileRead_open, FileRead_read,

戻り値:
  0:成功

関連項目

GetUseASyncLoadFlag読み込み処理系の関数で非同期読み込みを行うかどうかを取得する( 非同期読み込みに対応している関数のみ有効 )( TRUE:非同期読み込みを行う FALSE:非同期読み込みを行わない( デフォルト ) )(DxLibW)

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib その他
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs