UnityEvent
4 分
Unity提供了UnityEvents,使用户更容易使用C#事件和委托。
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 的信息。