---
title: Hello ZEPETOScript
slug: world-sdk-guide-kr/hello-zepetoscript
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## ZEPETOScript란 무엇인가요?

- ZEPETOScript는 ZEPETO World를 만들기 위해 사용되는 스크립팅 언어입니다.
- TypeScript 프로그래밍 언어를 지원합니다.
- ZEPETOScript는 ZEPETO World 내에서 행동과 기능을 정의하도록 설계되었습니다. 포함된 내용은:
  - 객체의 이동, 물리학 및 상호작용.
  - 사용자 입력을 포함한 이벤트 처리.
- ZepetoScriptBehaviour 클래스에서 상속되며, Unity의 MonoBehaviour 인터페이스와 호환되도록 설계되었습니다.
- 실행을 위해 장면의 활성 GameObjects에 부착할 수 있습니다.

:::hint{type="danger"}
**❗️ 주의**

- ZEPETO World를 개발할 때 C# 스크립트는 패키지 빌드에 포함되지 않습니다.
- ZEPETOScript만 사용하여 구현해야 합니다.
:::



## Hello World 튜토리얼

### 1단계 : ZEPETOScript 만들기

새로운 ZEPETOScript 파일을 만들기 위해,

\[프로젝트]를 클릭하고 패널의 왼쪽 상단 모서리에 있는 \[+] 아이콘을 선택하거나 자산 → 생성 → 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에 Component로 추가하기 위해서는, 해당 GameObject의 Inspector 창에 Add Component 버튼을 클릭해주세요.

![](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)



Zepeto Script Component의 Attach Zepeto Script 버튼을 클릭해주세요.

![](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 파일을 GameObject에 Component로 추가할 수 있습니다.

![](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 : Hello World`);
        console.warn(`warn : Hello World`);
        console.error(`error : Hello World`);
    }

}
```
:::



아래의 테스트 코드 출력 화면을 확인하세요.

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



ZEPETOScript 튜토리얼을 완료한 것을 축하합니다!

이전에 Unity에서 C#으로 개발한 경험이 있는 분들이나 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);
    }
}
```
:::



## 맵 데이터 유형 사용하기

- C#의 Dictionary 데이터 유형 대신 TypeScript의 Map 데이터 유형을 사용하여 키-값 쌍을 저장하고 관리하세요.
- 이 데이터 유형은 멀티플레이어 월드를 구현할 때 플레이어 데이터를 관리하는 데 특히 편리합니다.
- 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/)
:::

