UnityEvent
4 分
Unityは、ユーザーがC#イベントとデリゲートを使用しやすくするためにUnityEventsを提供します。
UnityEventsは、異なるオブジェクトから引数を渡したり、特定の要件が満たされたときにメッセージを送信する方法です。
ZEPETOScriptでUnityEventを使用するには、以下の形式で宣言する必要があります。
まず、UnityEventクラスを使用するために、以下のようにインポートコマンドを追加します。
import { UnityEvent } from 'UnityEngine.Events';UnityEventのサンプル結合コードを参照してください。
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { UnityEvent } from 'UnityEngine.Events';
import { Button } from 'UnityEngine.UI';
export default class Event extends ZepetoScriptBehaviour {
public btn : Button;
private mEvent: UnityEvent;
Start() {
// UnityEventの新しいインスタンスを作成し、mEventに割り当てます。
this.mEvent = new UnityEvent();
// mEventに新しいリスナーを追加します。このリスナーは、mEventが呼び出されたときにPingメソッドを実行します。
this.mEvent.AddListener(() => this.Ping());
// ボタンがクリックされ、mEventがnullでないかを確認します。
this.btn.onClick.AddListener(() => {
if (this.mEvent != null) {
// 上記の条件が真であれば、mEventを呼び出します。
this.mEvent.Invoke();
}
});
}
Ping() {
console.log('Ping');
}
}
- スクリプトの説明
- 上記の例では、ボタンが押されるたびに‘mEvent’という名前のUnityEventが呼び出され、‘mEvent’が呼び出されたときに‘Ping’メソッドが実行されます。
- したがって、ボタンが押されるたびに、コンソールに'Ping'というメッセージが表示されます。
接続しようとしているイベントにパラメータがある場合は、以下のようにUnityEventインポートコマンドを追加する必要があります。
import { UnityEvent$1 } from 'UnityEngine.Events';👍 ヒント
- UnityEvent$1はUnityEventのジェネリックバージョンです。
- 例えば、整数値を受け取るイベントを作成したい場合は、UnityEvent$1<int>
- UnityEvent$1のパラメータタイプはC#に従うことに注意してください。
パラメータを使用したUnityEvent$1のサンプルコードは以下の通りです。
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { UnityEvent$1 } from 'UnityEngine.Events';
import { Input } from 'UnityEngine';
export default class Event extends ZepetoScriptBehaviour {
private mEventInt: UnityEvent$1<int>;
private countNum: number;
Start() {
this.mEventInt = new UnityEvent$1<int>();
this.mEventInt.AddListener(num => this.Count(num));
this.countNum = 0;
}
Update() {
if ((Input.anyKeyDown) && (this.mEventInt != null)) {
this.mEventInt.Invoke(this.countNum);
++this.countNum;
if (this.countNum > 100) {
this.countNum = 0;
}
}
}
Count(num) {
console.log(`Count : ${num}`);
}
}
UnityEventsについて詳しく知りたい場合は、以下のリンクをクリックしてください。