3-4. カスタムイベント作成とScript間の連携

カスタムイベント作成とScript間の連携

カスタムイベント作成の概要

Robloxでは組み込み型のイベントを使用することが多いですが、これらだけではすべてのゲームロジックをカバーすることはできません。を使用することで、カスタムイベントを作成できます。これにより、独自のイベントを定義し、任意タイミングでの処理の実行が可能となります。また、を使用すると、イベントの戻り値を受け取ることができる双方向通信を実現できます。
これらの機能は、任意タイミングでのイベントを可能とするだけでなく、Script間でのパラメータの受け渡しなど、Script間の連携機能としても活用することができます。

BindableEventによる実装例

以下がBindableEventを用いたカスタムイベントの実装例です。

イベントの定義側(ScriptA)

イベントの呼び出し側(ScriptB)

この実装例では、カスタムイベントを作成し、そのイベントをトリガーしています。BindableEventは単方向通信であり、イベント発生時に特定の処理を実行するために使用されます。

BindableFunction

以下がBindableFunctionを用いたカスタムイベントの実装例です。

関数の定義側

関数の呼び出し側

BindableFunctionは双方向通信を可能にします。この実装例では、関数が呼び出された際にパラメータを受け取り、それに応じてレスポンスを返します。

BindableEvent/BindableFunction利用時の考慮事項

イベントへの引数には制限があることに注意

イベントや関数の引数には、特にテーブルなど複雑なオブジェクトを使用する場合、一部の制限があります。これらの制限を考慮せずに引数を設定すると、予期せぬトラブルの原因になることがあります。そのため、引数は可能な限りシンプルに保つか、引数として使用できるデータタイプのルールを理解しておくことが重要です。
引数の制限について詳しくはこちらの「引数の制限」を参照してください。

Script間の連携目的にはModuleScriptのほうがベター

上述の通り、DataModel内にあるBindableEventやBindableFunctionを利用することでScript間の連携も可能となりますが、Script間でパラメータを受け渡しする目的ではやや設定や準備が煩雑です。Script間の連携を目的とする場合次章で紹介するModuleScriptを活用した共通処理化やデータ共有を利用することがよりスマートといえます。BindableEvent/BindableFunctionは、複数のリスナーが利用する汎用的なカスタムイベントとして、利用することが多いといえます。

参照すべき情報

必要に応じて以下の公式ドキュメント等の内容を参照しましょう。