投稿

ラベル(インスタンスごとに繰り返す)が付いた投稿を表示しています

実は奥(闇)が深い「真のあいだ一度だけ実行(一度だけ実行する)」条件を使いこなそう【GDevelop】

イメージ
便利すぎてついついお世話になってしまう「真のあいだ一度だけ実行」条件ですが、使い込んでいくと「あれ?この場合どうなるの?」という状態におちいりやすい条件でもあります。 そこで、このページでは「真のあいだ一度だけ実行」条件が、実際にはどのように機能しているのか、例をまじえて解説します。 ※ 執筆時点の GDevelop バージョンは 5.4.213 です。 ※ 以降「真のあいだ一度だけ実行」だと長いので「一度だけ実行する」と表記します。 よくある勘違い「インスタンスごとにチェックしてる」 例えばこのようなイベントを組んだとき↓ 各戦車が一度だけX方向に100px動く X座標は0で配置されている戦車はプレビューすると…… 3両全て一度だけ100px移動します。 このことから「一度だけ実行する」条件はインスタンスごとにチェックしてる、 と思ってはいけません! 偶然それっぽく機能しているだけです。 では、今度はこのようなイベントを試してみます↓ 3回、Y座標が100の戦車を一度だけX方向に100px動かす 3回&一度だけ、というちょっと意味不明なイベントですが、プレビューした結果はこのようになります↓ 「一度だけ実行する」条件が設定されているにも関わらず、Y座標が100の戦車(つまり一番上のみ)が、3回100px移動しています。 もしインスタンスごとにチェックしているのであれば、一度しか移動しないはずですが、そうはなりませんでした。 ちょっと何が言いたいのか分からないから早く結論(仕組み)を言え! はいごめんなさいw😅 「一度だけ実行する」条件は、インスタンス単位ではなくイベント単位でチェックされています。 このことは 公式ドキュメント(英語) にも記載されています。 いやいやちょっと待て!イベント単位ならさっきの例の結果はおかしいだろ! 確かに上記の例は、どちらもイベント単位でチェックしているとは思えない結果になっていますが、これは繰り返しを利用しているからそのような印象になるだけです。 繰り返しを個々のイベントに分解してみると分かりやすくなります。 まず最初の例は、以下のように分解することができます↓ 各インスタンスの判別にはY座標を利用 これなら3両全てが一度だけ移動したことにも、納得がいくかと思います。 続いて2つ目の例も分解してみましょう↓ まったく...

【GDevelop】「インスタンスごとに繰り返す」は、できるだけ条件でインスタンスを絞り込んでから実行したほうが早いらしいぞ!

イメージ
Discord で「インスタンスごとに繰り返す」の効率化に関する話題が挙がり、ちょっと調査したので、その結果をここに記録しておきます。 そうそう、まだ  GDevelop の Discord サーバー  に参加していない方は、ぜひ参加しましょう! 日本語フォーラムもあるよ😉 あと、余談ですが「インスタンス」とはシーン上に配置された「オブジェクト」のことです。 GDevelop は、それらを区別せずにどちらもオブジェクトと言ったりするのですが、明確に表現する必要がある場合、唐突にインスタンスと言ったりする、 ややこしい  おちゃめな一面がありますw ご注意ください。 さて、表題の件、いきなり結論ですが…… 「インスタンスごとに繰り返す」は、できるだけ条件でインスタンスを絞り込んでから実行したほうが早い! つまり「インスタンスごとに繰り返す」内で、インスタンスを絞り込むより、あらかじめ親イベントの条件で絞り込んでおいたほうが、処理が早いということです。 ↓具体的な例をご覧ください。 「繰り返しが先」イベントグループでは、「インスタンスごとに繰り返す」の中でインスタンスを絞り込んでいます。 対して「繰り返しが後」イベントグループでは、親イベントの条件でインスタンスを絞り込んでから、「インスタンスごとに繰り返す」を実行しています。 ※ 「1000回繰り返す」は、処理にかかる時間をより明確にするためのものです。 ※ 座標を条件にして絞り込んでいますが、結果的にはすべてのインスタンスが対象となっています。「繰り返しが先」と「繰り返しが後」で差はありません。 このイベントを処理するためにかかった時間は以下のとおりです。 「繰り返しが先」は、36.14ms 「繰り返しが後」は、17.39ms という結果になり、なんでかは分かりませんが(ぉぃ)2倍以上早くなりました👍 まぁとにかく、 「インスタンスごとに繰り返す」内の条件は通常の条件より負荷が高いっぽいので注意しましょう! ということです。めでたしめでたし!(雑)

このブログの人気の投稿

【GDevelop】タイルスプライトで作る流れる背景

GDevelop でシンプルなボタンの作り方

【GDevelop】2026年1月よりサブスク値上げ。既存ユーザーへの「神対応」と、今すぐ入るべき理由。