---
title: 你好 ZEPETOScript
slug: world-sdk-guide-ch/zepetoscript
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

## 什么是 ZEPETOScript？

- ZEPETOScript 是一种用于创建 ZEPETO 世界的脚本语言。
- 它支持 TypeScript 编程语言。
- ZEPETOScript 旨在定义 ZEPETO 世界中的行为和功能，包括：
  - 物体的运动、物理和交互。
  - 处理事件，包括用户输入。
- 继承自 ZepetoScriptBehaviour 类，旨在与 Unity 的 MonoBehaviour 接口兼容。
- 可以附加到场景中的活动 GameObjects 以执行。

:::hint{type="danger"}
**❗️ 注意**

- 在为 ZEPETO 世界开发时，C# 脚本不包含在包构建中。
- 确保仅使用 ZEPETOScript 进行实现。
:::



## 你好，世界教程

### 步骤 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，请单击 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)



点击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(`日志 : 你好，世界`);
        console.warn(`警告 : 你好，世界`);
        console.error(`错误 : 你好，世界`);
    }

}
```
:::



请查看下面的测试代码输出屏幕。

![](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);
    }
}
```
:::



## 使用 Map 数据类型

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

