UnityEvent
Unity menyediakan UnityEvents untuk memudahkan pengguna menggunakan event dan delegate C#.
UnityEvents adalah cara untuk mengirimkan argumen dari objek yang berbeda atau meneruskan pesan ketika persyaratan tertentu terpenuhi.
Untuk menggunakan UnityEvent dalam ZEPETOScript, Anda perlu mendeklarasikannya dalam format berikut.
Pertama, tambahkan perintah impor seperti yang ditunjukkan di bawah ini untuk menggunakan kelas UnityEvent.
import { UnityEvent } from 'UnityEngine.Events';Lihat contoh kode penggabungan untuk 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() {
// Membuat instance baru dari UnityEvent dan menetapkannya ke mEvent.
this.mEvent = new UnityEvent();
// Menambahkan listener baru ke mEvent. Listener ini mengeksekusi metode Ping ketika mEvent dipanggil.
this.mEvent.AddListener(() => this.Ping());
// Memeriksa apakah tombol diklik dan mEvent tidak null.
this.btn.onClick.AddListener(() => {
if (this.mEvent != null) {
// Jika kondisi di atas benar, memanggil mEvent.
this.mEvent.Invoke();
}
});
}
Ping() {
console.log('Ping');
}
}
- Deskripsi Skrip
- Dalam contoh di atas, sebuah UnityEvent bernama ‘mEvent’ dipanggil setiap kali tombol ditekan, dan mengeksekusi metode ‘Ping’ ketika ‘mEvent’ dipanggil.
- Oleh karena itu, setiap kali tombol ditekan, pesan 'Ping' dicetak ke konsol.
Jika acara yang akan Anda sambungkan memiliki parameter, Anda perlu menambahkan perintah impor UnityEvent seperti yang ditunjukkan di bawah ini.
import { UnityEvent$1 } from 'UnityEngine.Events';👍 Tips
- UnityEvent$1 adalah versi generik dari UnityEvent
- Misalnya, jika Anda ingin membuat acara yang menerima nilai integer, Anda dapat menggunakan UnityEvent$1<int>
- Harap dicatat bahwa tipe parameter dari UnityEvent$1 mengikuti C#
Contoh kode saat menggunakan UnityEvent$1 dengan parameter adalah sebagai berikut.
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}`);
}
}
Anda dapat mempelajari lebih lanjut tentang UnityEvents dengan mengklik tautan di bawah ini.