【GDevelop】リンクオブジェクトの使い方

リンクオブジェクト機能を使えば、あるオブジェクトから、別のオブジェクトを参照することができるようになります。

っと言われても、ナンノコッチャ🤔かと思うので、例をあげて説明します。

※ ちなみに少しまぎらわしいのですが、「リンク」というオブジェクトがあるわけではなく、オブジェクト同士をリンクする機能のことを「リンクオブジェクト」といいます。
また、正確には「オブジェクト間をリンクできる」のではなく「異なるオブジェクトのインスタンス間をリンクできる」です。(ヤヤコシスギルワー😫)

リンクしたオブジェクトにだけアクションできる

例えば、こんな事ができます。

画面下の黄色ボタンをクリックすると、リンクした船だけが沈みます。

ポイントは、沈むのは全ての船ではなくリンクしている船だけ、という点です。

これは画像に書かれているように、それぞれの黄色ボタンと船が、リンクオブジェクト機能でリンクしているからです。

このように、同じオブジェクトから作られたインスタンスが複数あっても、リンクオブジェクト機能を使えば、リンクしたインスタンスのみに絞り込んでアクションを実行することができます。

では、具体的にどのように作られているのか見てみましょう。

エディター上のシーン

↓シーンはこんな感じです。

普通(?)に海の上に船があって、下に黒帯が置いてあるだけです。

黄色ボタンが置かれていない理由は、次のイベントのところで説明します。

ボタンを生成してリンクするイベント

↓このシーンのイベントは、この様になっています。

まずシーンが始まった時に、船の下の方に黄色ボタンを生成して、船と黄色ボタンをリンクしています。

ポイントは、「船のインスタンスごとに繰り返す」を使用している点です。
繰り返しを使用しないと、最初の船とリンクしたボタンが 1 つ生成されるだけになってしまいます。

また、イベントで黄色ボタンを生成することで、リンク先の黄色ボタンを絞り込む手間を省いています。
これが、シーンエディター上でボタンを置いていなかった理由です。

もし、シーンエディター上で予めボタンを置いておく必要がある場合は、どの船とどのボタンをリンクするか絞り込んでからリンクする、というちょっと面倒くさいイベントにする必要があります。

シーンエディター上で、リンクを定義する機能があれば良いんですけどね~😅

ボタンが押されたらリンク先のアニメーションを変更するイベント

さて他には、黄色ボタンがクリックされたら、そのボタンとリンクしている船を考慮した上で、船のアニメーションを変更する、というイベントが組まれています。

ここでのポイントは、もちろん「黄色ボタンにリンクされたすべての船を考慮」の条件です。
この条件により、続く「船のアニメーションを沈没にセットする」アクションが、リンク先の船にのみ実行されるという仕組みです。

ところで、この「リンクされたオブジェクトを考慮する」条件ですが、少しパラメーターの説明が難解なので補足します。

説明を読んでも「どっちがどっち?」となりますが、1 つめの「これらのオブジェクトを選択してください......」には、考慮されるオブジェクトを入れて、2 つめの「...これらがこのオブジェクトにリンクされている場合」には、リンク元のオブジェクトを入れましょう。

この問題は、将来的に翻訳の改善で解決される見込みです。

リンクは双方向

ここでは黄色ボタンから船を考慮しましたが、逆に船から黄色ボタンを考慮することもできます。
つまりリンクしたオブジェクトは、お互いに考慮することができます。

同じオブジェクトのインスタンス同士はリンクできない

なんとなくできそうだし、できたら便利そうなのですが、リンク設定がオブジェクト単位なので、同じオブジェクトのインスタンス同士はリンクできないと思われます。😗

おしまい

なんか終始「ヤヤコシイ」とか言ってる記事になってしまいましたが、使いこなせば便利な機能なので、これとこれを連動させたい!みたいな時は、リンクオブジェクト機能のことを思い出してあげてください😅

コメント

このブログの人気の投稿

ブラウザ上で動く GDevelop オンライン版を試してみた感想

GDevelop の「イベント」を正しく理解しよう

【GDevelop】オブジェクト間の距離で音量を変化させる方法