创造你的世界
脚本编写
可编程对象
4分
zepetoscriptableobject 支持 unity scriptableobject。zepetoscriptableobject 是一个数据容器,可以保存大量数据,例如世界数据设置和角色选项。 要创建一个新的 zepetoscriptableobject 文件,请单击项目面板左上角的 \[+] 图标,或单击资产 → 创建 → zepeto → scriptableobject。 新创建的 zepetoscriptableobject 需要通过创建具有定义数据类的脚本进行连接。 创建一个新的 zepetoscript 文件,并声明您将用作成员变量的数据。 以下是一些可以用作数据的示例代码。 typescript import { vector3, quaternion } from 'unityengine'; export default class playerscriptobjectdef { public name string; public hp number; public position vector3; public rotation vector3; } 当您将 zepetoscript 与定义的数据类链接到 zepetoscriptableobjects 时,您将在检查器窗口中看到这些数据,如下所示。 创建一个 zepetoscript 文件以从 zepetoscriptableobject 中调用数据。 从 zepetoscript 导入 zepetoscriptableobject,并导入您声明的数据类型。 typescript import { zepetoscriptableobject } from 'zepeto script'; import playerscriptobjectdef from ' /playerdefine/playerscriptobjectdef'; 在zepetoscript中声明zepetoscriptableobject的属性。 typescript public player zepetoscriptableobject\<playerscriptobjectdef>; public enemy zepetoscriptableobject\<playerscriptobjectdef>; 在zepetoscript中打开检查器窗口,为zepetoscriptableobject属性分配值,如下所示。 这个示例展示了如何使用zepetoscriptableobject并访问它的值。 typescript // 通过名称直接访问 console log(`玩家名称 ${this player\["name"]}`); console log(`玩家生命值 ${this player\["hp"]}`); console log(`玩家位置 (${this player\["position"] x}, ${this player\["position"] y}, ${this player\["position"] z})`); console log(`玩家旋转 (${this player\["rotation"] x}, ${this player\["rotation"] y}, ${this player\["rotation"] z})`); // 通用数据调用 let monsterstate = this enemy targetobject; console log(`敌人名称 ${monsterstate name}`); console log(`敌人生命值 ${monsterstate hp}`); console log(`敌人位置 (${monsterstate position x}, ${monsterstate position y}, ${monsterstate position z})`); console log(`敌人旋转 (${monsterstate rotation x}, ${monsterstate rotation y}, ${monsterstate rotation z})`); 要访问原始类型的成员变量,请将其声明为通用类型或使用类型转换,如下面的示例所示。 typescript // 类型转换 let playerposition = this player\["position"] as vector3; console log(`玩家位置 (x ${playerposition x}, y ${playerposition y}, z ${playerposition z})`); // 通用类型可以访问类成员 console log(`敌人位置 (x ${monsterstate position x}, y ${monsterstate position y}, z ${monsterstate position z})`); 查看scriptableobject的完整代码示例。 typescript import { vector3 } from 'unityengine'; import { zepetoscriptbehaviour, zepetoscriptableobject } from 'zepeto script'; // 导入脚本化对象类型定义 import playerscriptobjectdef from ' /playerdefine/playerscriptobjectdef'; export default class scriptableobjectsample extends zepetoscriptbehaviour { public player zepetoscriptableobject; // 泛型类型调用 public enemy zepetoscriptableobject\<playerscriptobjectdef>; awake() { // 通过名称直接访问 console log(`玩家名称 ${this player\["name"]}`); console log(`玩家生命值 ${this player\["hp"]}`); console log(`玩家位置 (${this player\["position"] x}, ${this player\["position"] y}, ${this player\["position"] z})`); console log(`玩家旋转 (${this player\["rotation"] x}, ${this player\["rotation"] y}, ${this player\["rotation"] z})`); // 泛型数据调用 let monsterstate = this enemy targetobject; console log(`敌人名称 ${monsterstate name}`); console log(`敌人生命值 ${monsterstate hp}`); console log(`敌人位置 (${monsterstate position x}, ${monsterstate position y}, ${monsterstate position z})`); console log(`敌人旋转 (${monsterstate rotation x}, ${monsterstate rotation y}, ${monsterstate rotation z})`); // 类型转换 let playerposition = this player\["position"] as vector3; console log(`玩家位置 (${playerposition x}, ${playerposition y}, ${playerposition z})`); // 泛型类型可以访问类成员 console log(`敌人位置 (${monsterstate position x}, ${monsterstate position y}, ${monsterstate position z})`); } }