Game Maker Language リファレンス > 組み込み関数 用途別 > 非同期関数 > show_question_async
モーダルでないYES/NOダイアログを表示します
show_question_async(string);
この関数はYES/NOダイアログを表示します。これは非同期関数であり、GameMaker:Studioはその選択が決定するのを待ちません(通常通りのイベントを実行します)。"Yes"または"No"が押下されることで、"async_load"変数にds_map形式でその結果が格納されます。
ds_mapには"id"と"status"の2つのキーが格納されます。"id"はこの関数の戻り値と比較することで整合性をチェックし、"status"は"Yes"が押されたらtrue、"No"が押されたらfalseを格納します。
マウスの左クリックイベントで、鎧を購入するかどうかのYES/NOダイアログを表示するとします。
// ダイアログIDを "msg" に保存 msg = show_question_async("Do you want to buy some armour for " + string(armour[0, 5]) + "coins?");
その結果の判定はDialogイベントで以下のように記述します。
var i_d, stat; i_d = ds_map_find_value(async_load, "id"); if i_d == msg // "id" が "msg" の値と一致していたら対象のダイアログの結果 { if ds_map_find_value(async_load, "status") { // "status" が true(1) ならば YES を選んだ処理をする coins -= armour[0,5]; global.protection += armour[0,0]; } }
関数の戻り値と"id"を比較し、指定のダイアログが押されたかどうかを判定し、さらに "status"がtrueであれば、鎧の購入処理をします。