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

Unity มอบ UnityEvents เพื่อทำให้ผู้ใช้สามารถใช้เหตุการณ์และตัวแทน C# ได้ง่ายขึ้น.

UnityEvents เป็นวิธีการส่งอาร์กิวเมนต์จากวัตถุที่แตกต่างกันหรือส่งข้อความเมื่อมีการตอบสนองบางอย่างที่ตรงตามข้อกำหนด.

ในการใช้ UnityEvent ใน ZEPETOScript คุณต้องประกาศในรูปแบบดังต่อไปนี้.

ก่อนอื่นให้เพิ่มคำสั่งนำเข้าเหมือนที่แสดงด้านล่างเพื่อใช้คลาส 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 ผู้ฟังนี้จะเรียกใช้เมธอด Ping เมื่อ mEvent ถูกเรียก.
        this.mEvent.AddListener(() => this.Ping());
 
        // ตรวจสอบว่ามีการคลิกปุ่มและ mEvent ไม่เป็น null.
        this.btn.onClick.AddListener(() => {
            if (this.mEvent != null) {
                // หากเงื่อนไขข้างต้นเป็นจริง จะเรียกใช้ mEvent.
                this.mEvent.Invoke();
            }
        });
    }
  
    Ping() {
        console.log('Ping');
    }
}
```
:::



- คำอธิบายสคริปต์
  - ในตัวอย่างข้างต้น UnityEvent ที่ชื่อว่า ‘mEvent’ จะถูกเรียกใช้ทุกครั้งที่มีการกดปุ่ม และจะเรียกใช้เมธอด ‘Ping’ เมื่อ ‘mEvent’ ถูกเรียก.
  - ดังนั้นทุกครั้งที่มีการกดปุ่ม ข้อความ '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)
:::

