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

유니티는 사용자가 C# 이벤트와 델리게이트를 더 쉽게 사용할 수 있도록 UnityEvents를 제공합니다.

UnityEvents는 서로 다른 객체에서 인수를 전달하거나 특정 요구 사항이 충족될 때 메시지를 전달하는 방법입니다.

ZEPETOScript에서 UnityEvent를 사용하려면 다음 형식으로 선언해야 합니다.

먼저, UnityEvent 클래스를 사용하기 위해 아래와 같이 import 명령을 추가합니다.

:::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)
:::

