---
title: UnityEvent
slug: world-sdk-guide-ch/unityevent
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

Unity提供了UnityEvents，使用户更容易使用C#事件和委托。

UnityEvents是一种在满足特定条件时从不同对象传递参数或传递消息的方式。

要在ZEPETOScript中使用UnityEvent，您需要按照以下格式声明它。

首先，添加如下的导入命令以使用UnityEvent类。

:::CodeblockTabs
TypeScript

```typescript
import { UnityEvent } from 'UnityEngine.Events';
```
:::

查看UnityEvent的示例耦合代码。

:::CodeblockTabs
Event

```typescript
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 导入命令。

:::CodeblockTabs
TypeScript

```typescript
import { UnityEvent$1 } from 'UnityEngine.Events';
```
:::

:::hint{type="success"}
👍 **提示**

- UnityEvent$1 是 UnityEvent 的通用版本
- 例如，如果您想创建一个接受整数值的事件，可以使用 `UnityEvent$1<int>`
- 请注意，UnityEvent$1 的参数类型遵循 C#
:::



使用带参数的 UnityEvent$1 的示例代码如下。

:::CodeblockTabs
Event

```typescript
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 的信息。

:::hint{type="info"}
**📘 UnityEvents**
[https://docs.unity3d.com/kr/530/ScriptReference/Events.UnityEvent.html](https://docs.unity3d.com/kr/530/ScriptReference/Events.UnityEvent.html)
:::

