UnityEvent
Unity fournit des UnityEvents pour faciliter l'utilisation des événements et des délégués C# par les utilisateurs.
Les UnityEvents sont un moyen de transmettre des arguments entre différents objets ou de transmettre un message lorsque certaines conditions sont remplies.
Pour utiliser UnityEvent dans ZEPETOScript, vous devez le déclarer dans le format suivant.
Tout d'abord, ajoutez une commande d'importation comme indiqué ci-dessous pour utiliser la classe UnityEvent.
import { UnityEvent } from 'UnityEngine.Events';Voir un exemple de code de couplage pour un 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() {
// Crée une nouvelle instance de UnityEvent et l'assigne à mEvent.
this.mEvent = new UnityEvent();
// Ajoute un nouvel écouteur à mEvent. Cet écouteur exécute la méthode Ping lorsque mEvent est appelé.
this.mEvent.AddListener(() => this.Ping());
// Vérifie si un bouton est cliqué et si mEvent n'est pas nul.
this.btn.onClick.AddListener(() => {
if (this.mEvent != null) {
// Si la condition ci-dessus est vraie, invoque mEvent.
this.mEvent.Invoke();
}
});
}
Ping() {
console.log('Ping');
}
}
- Description du script
- Dans l'exemple ci-dessus, un UnityEvent nommé ‘mEvent’ est invoqué chaque fois qu'un bouton est pressé, et il exécute la méthode ‘Ping’ lorsque ‘mEvent’ est appelé.
- Par conséquent, chaque fois que le bouton est pressé, un message 'Ping' est imprimé dans la console.
Si l'événement auquel vous êtes sur le point de vous connecter a des paramètres, vous devez ajouter une commande d'importation UnityEvent comme indiqué ci-dessous.
import { UnityEvent$1 } from 'UnityEngine.Events';👍 Conseils
- UnityEvent$1 est la version générique de UnityEvent
- Par exemple, si vous souhaitez créer un événement qui accepte une valeur entière, vous pouvez utiliser UnityEvent$1<int>
- Veuillez noter que le type de paramètre de UnityEvent$1 suit C#
Un exemple de code lors de l'utilisation de UnityEvent$1 avec des paramètres est le suivant.
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}`);
}
}
Vous pouvez en apprendre davantage sur les UnityEvents en cliquant sur le lien ci-dessous.