---
title: สวัสดี ZEPETOScript
slug: world-sdk-guide-th/zepetoscript
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## ZEPETOScript คืออะไร?

- ZEPETOScript เป็นภาษาสคริปต์ที่ใช้สำหรับสร้าง ZEPETO World.
- รองรับภาษาการเขียนโปรแกรม TypeScript.
- ZEPETOScript ถูกออกแบบมาเพื่อกำหนดพฤติกรรมและฟังก์ชันภายใน ZEPETO World รวมถึง:
  - การเคลื่อนไหว ฟิสิกส์ และการโต้ตอบของวัตถุ.
  - การจัดการเหตุการณ์ รวมถึงการป้อนข้อมูลของผู้ใช้.
- สืบทอดจากคลาส ZepetoScriptBehaviour ซึ่งออกแบบมาให้เข้ากันได้กับอินเทอร์เฟซ MonoBehaviour ของ Unity.
- สามารถแนบกับ GameObjects ที่ใช้งานอยู่ในฉากเพื่อการดำเนินการ.

:::hint{type="danger"}
**❗️ ระวัง**

- เมื่อพัฒนาสำหรับ ZEPETO World สคริปต์ C# จะไม่รวมอยู่ในแพ็คเกจการสร้าง.
- ตรวจสอบให้แน่ใจว่าใช้เฉพาะ ZEPETOScript เท่านั้น.
:::



## บทเรียน Hello World

### ขั้นตอนที่ 1 : การสร้าง ZEPETOScript

ในการสร้างไฟล์ ZEPETOScript ใหม่,

คลิก \[Project] และเลือกไอคอน \[+] ที่มุมซ้ายบนของแผง หรือคลิก Assets → Create → ZEPETO → TypeScript.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-W7_oSAQJMVKn1HXIKkcZn-20240904-102418.png)



คุณสามารถเห็นว่า ZEPETOScript ใหม่ถูกสร้างขึ้นแล้ว ตามที่แสดงด้านล่าง.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-jWaWZgzsGBAfZGeKXQIMv-20240904-102418.png" size="70" width="592" height="432" position="center" showCaption="false"}



### ขั้นตอนที่ 2 : การเพิ่ม ZEPETOScript ลงใน GameObject

หากต้องการเพิ่ม ZEPETOScript ที่สร้างไว้ก่อนหน้านี้เป็นส่วนประกอบให้กับ GameObject ให้คลิกปุ่ม Add Component ในหน้าต่าง Inspector ของ GameObject

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/kt-hSmMqXIK8wXfK09n6P_image.png)



ในหน้าต่าง Add Component เลือก Zepeto Script Component

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/2x7IOeRiQzr6Vkxe74kwt_image.png)



คลิกปุ่ม Attach Zepeto Script ใน Zepeto Script Component

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/7fV1BDKL4rDv-gbq0dJLX_image.png)



ในหน้าต่าง Attach Zepeto Script เลือกไฟล์ HelloWorld ZEPETOScript ที่คุณสร้างไว้ก่อนหน้านี้

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/QZ8N-e1qp5BHUJyhZGJ9Z_image.png)



คุณสามารถเพิ่มไฟล์ HelloWorld ZEPETOScript เป็น Component ให้กับ GameObject ได้ดังที่แสดงในหน้าจอด้านล่าง

![](https://api.archbee.com/api/optimize/xv-TGeWVTX2GDZMFGOf1Y/-xe1rspwelXIyUeM3abbD_image.png)



### ขั้นตอนที่ 3 : การเพิ่มโค้ดทดสอบหรือการสร้างบันทึก

ZEPETOScript ที่สร้างขึ้นใหม่จะแสดงด้านล่าง คุณสามารถแก้ไขสคริปต์โดยใช้เครื่องมือพัฒนาของ Unity

:::CodeblockTabs
NewTypescript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class NewTypescript extends ZepetoScriptBehaviour {

    Start() {    

    }

}
```
:::



ลองเพิ่มโค้ดบันทึกภายในฟังก์ชัน Start เพื่อตรวจสอบว่า ZEPETOScript ทำงานหรือไม่

:::CodeblockTabs
HelloWorld

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';

export default class HelloWorld extends ZepetoScriptBehaviour {

    Start() {
        console.log(`log : สวัสดีชาวโลก`);
        console.warn(`warn : สวัสดีชาวโลก`);
        console.error(`error : สวัสดีชาวโลก`);
    }

}
```
:::



ดูผลลัพธ์ของโค้ดทดสอบด้านล่างนี้.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-5To_fp4pJMCsmAIhSpK-5-20240904-102418.png)



ขอแสดงความยินดีที่คุณได้ทำการเรียนรู้ ZEPETOScript เสร็จสิ้นแล้ว!

สำหรับผู้ที่เคยพัฒนาด้วย C# ใน Unity หรือผู้ที่ใหม่กับการพัฒนา ZEPETO World มาลงลึกในพื้นฐานของ ZEPETOScript กันเถอะ.



## การประกาศตัวแปรใน ZEPETOScript

- ZEPETOScript ใช้ไวยากรณ์ TypeScript.
- ดังนั้นจึงจำเป็นต้องประกาศประเภทเมื่อประกาศตัวแปร.
- ตัวอย่างการประกาศตัวแปร:

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
 
    // ตัวแปรทั่วโลก
    private number: number = 10;
    private floatNumber: number = 10.5;
    private word: string = "ZEPETO!";
    private isTrue: boolean = true;
    private list : number[] = [1,2,3];
    private listGeneric : Array<number> = [4,5,6];
 
    Start() {
        console.log(this.number);
        console.log(this.floatNumber);
        console.log(`สวัสดี, ${this.word}`);
        console.log(this.isTrue);
        console.log(this.list);
        console.log(this.listGeneric);
         
        // ตัวแปรท้องถิ่น
        let a = 30;
        const b = 40;
        console.log(a);
        console.log(b);
    }
}
```
:::



## การใช้ประเภทข้อมูล Map

- แทนที่จะใช้ประเภทข้อมูล Dictionary ของ C# ให้ใช้ประเภทข้อมูล Map ของ TypeScript เพื่อเก็บและจัดการคู่คีย์-ค่า
- ประเภทข้อมูลนี้สะดวกโดยเฉพาะในการจัดการข้อมูลผู้เล่นเมื่อทำการสร้างโลกแบบผู้เล่นหลายคน
- ตัวอย่างการใช้งานที่ง่ายของ Map:

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
 
    private myMap = new Map<string, string>();
     
    Start() {
        this.myMap.set("Player1", "Ze");
        this.myMap.set("Player2", "pe");
        this.myMap.set("Player3", "to");
         
        this.myMap.forEach((value, key) => {
            console.log(key, value);
        });
 
        if(this.myMap.has("Player2")) {
            let value: string | undefined = this.myMap.get("Player2");
            console.log(value);
        }
 
        this.myMap.delete("Player2");
 
        console.log(this.myMap.has("Player2"));
    }
}
```
:::



## การใช้ JSON

เมื่อทำงานกับข้อมูลที่จัดรูปแบบเป็น JSON คุณสามารถใช้ฟังก์ชันในตัวของ TypeScript ได้

- การแปลงสตริง JSON เป็นอ็อบเจ็กต์
  - ใช้ `JSON.parse()` เมธอด.
- การแปลงอ็อบเจ็กต์เป็นสตริง JSON
  - ใช้ `JSON.stringify()` เมธอด.
- ตัวอย่างการใช้ JSON:

:::CodeblockTabs
TypeScript

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
 
export default class HelloZepetoScript extends ZepetoScriptBehaviour {
     
    Start() {
        let jsonData = '{"id":"USER1234", "name":"zepeto", "age":15}';
 
        // การแปลงสตริง JSON เป็นอ็อบเจ็กต์
        let userObject : User = JSON.parse(jsonData);
        console.log(userObject.id);
        console.log(userObject.name);
        console.log(userObject.age);
         
        userObject.age = 16;
 
        // การแปลงอ็อบเจ็กต์เป็นสตริง JSON
        let newJsonData = JSON.stringify(userObject);
        console.log(newJsonData);
    }
}
 
class User {
    constructor(public id: string, public name: string, public age: number) {}
}
```
:::



:::hint{type="info"}
- สำหรับไวยากรณ์ที่ละเอียดมากขึ้น โปรดดูที่เอกสาร TypeScript
  - [https://www.typescriptlang.org/docs/](https://www.typescriptlang.org/docs/)
:::

