UnityEvent を使用した Unity でのイベント システムの実装
Unity では、イベント システムにより、ゲーム内のさまざまなコンポーネントとオブジェクト間の通信が可能になります。 C# アプローチを使用する場合、UnityEvent を使用してカスタム イベントを作成できます。
カスタム イベント用の UnityEvent
UnityEvent でカスタム イベントを作成するには、パブリック UnityEvent を次のようなスクリプト:
public UnityEvent whoa;
UnityEvent は、シンプルで直感的な処理方法を提供します。明示的なデリゲートや関数シグネチャを必要とせずにイベントを実行できます。
実装例
「BigScript.cs」スクリプト内:
using UnityEngine; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
インスペクター内、他のスクリプトを「whoa」イベント フィールドにドラッグ アンド ドロップできます。これらのスクリプトには、「whoa」イベントがトリガーされたときに呼び出される関数が含まれています。
「BigScript」コンポーネント内からイベントをトリガーするには、「whoa」イベントで Invoke() メソッドを呼び出すだけです。
カスタム イベントでの引数の処理
引数を必要とするイベントの場合、次のように定義できます。ジェネリック型パラメーターを備えた独自の UnityEvent サブクラス。たとえば、float 引数を取るイベントを作成するには:
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
その後、スクリプトでイベントを定義し、次のように使用できます:
public _UnityEventFloat changedLength; void ProcessValues(float v) { // ... changedLength.Invoke(1.4455f); }
ドラッグ時他のスクリプトをインスペクターのイベントフィールドに追加する場合は、引数を処理するために必ず「Dynamic float」セクションを選択してください
実際的な実装
複数のオブジェクトが共通イベントにサブスクライブする必要がある特定のシナリオでは、カスタム スクリプトを作成し、それをプレハブに添付できます。 「スタッフ」カテゴリーです。このスクリプトでは、「一日が完了しました」イベントをサブスクライブできます。イベントがトリガーされると、スクリプトは「スタッフ」メンバーに必要なアクションを実行します。
このアプローチにより、プレハブ内で一元的にイベントをサブスクライブできるため、インスタンス化されたオブジェクトを個別に手動でサブスクライブする必要がなくなります。 .
以上がUnityEvent を使用すると、Unity ゲーム開発におけるイベント処理をどのように簡素化できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。