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

Unityは、ユーザーがC#イベントとデリゲートを使用しやすくするためにUnityEventsを提供します。

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

