GameMaker 日本語掲示板

【プログラミング一般】監視するか報告するか? / 9

9 コメント
views
16 フォロー
9
asa 2021/03/10 (水) 00:40:35 修正 >> 8

GMSは関数への参照idを変数に入れたり、それを他の関数に渡したり渡された関数を実行したりできるので、それが該当するようです(GMSでの呼び方はよく分かりません)。

例えば、
Aが「歩く」のあとでBに演出表示をさせて「止まって」待機し、Bが完了したタイミングで「ジャンプ」に移る場合は、Aの「ジャンプする」の部分を関数jumpとして切り出しておいて、AがBに指示を出す時点で関数jumpを渡す(=コールバック関数)。Bは自分の処理が終わったら渡されてるA関数jumpを実行。その結果、Aはジャンプすると。

// AからBに指示
with (B) { scr_effect_show(id, scr_jump); }

イメージ的にはAはBに「ジャンプ」の動きを移譲し、ぼーっと待機。Bは自分の処理を終えて関数jumpを呼び出し。Aは遠隔で操られ動かされる感じでしょうか(全然違うかもしれませんが)。

関数jumpがどうやってAを参照し動かすのかですが、たぶん上記のコードのように、Aがコールバック関数を渡す時に自分のidを一緒に渡しておけば下記のようにBはwith構文で実行できるのでこれで対処できそうです。

// Bの終了時
with (someone) { script_execute(scr_jump); }

これでBはAが誰だろうと知ったこっちゃなく何をするのかも知ったこっちゃなく済みます(と思います…)

教えていただいたキーワードでいろいろ調べてみようと思います。ありがとうございます。

通報 ...