ScriptableObject
ZepetoScriptableObject รองรับ Unity ScriptableObject. ZepetoScriptableObject เป็นตัวเก็บข้อมูลที่บันทึกข้อมูลจำนวนมาก เช่น การตั้งค่าข้อมูลโลกและตัวเลือกตัวละคร.
ในการสร้างไฟล์ ZepetoScriptableObject ใหม่ ให้คลิกที่ไอคอน [+] ที่มุมซ้ายบนของแผงโครงการ หรือคลิกที่ Assets → Create → ZEPETO → ScriptableObject.

ZepetoScriptableObject ที่สร้างขึ้นใหม่จำเป็นต้องเชื่อมต่อโดยการสร้างสคริปต์ที่มีคลาสข้อมูลที่กำหนดไว้.

สร้างไฟล์ ZEPETOScript ใหม่ และประกาศข้อมูลที่คุณจะใช้เป็นตัวแปรสมาชิก.
นี่คือตัวอย่างโค้ดบางส่วนที่สามารถใช้เป็นข้อมูลได้.
import { Vector3, Quaternion } from 'UnityEngine';
export default class PlayerScriptObjectDef {
public name: string;
public hp: number;
public position: Vector3;
public rotation: Vector3;
}
เมื่อคุณเชื่อมโยง ZEPETOScript กับคลาสข้อมูลที่กำหนดไปยัง ZepetoScriptableObjects คุณจะเห็นข้อมูลเหล่านั้นในหน้าต่าง Inspector ดังที่แสดงด้านล่าง

สร้างไฟล์ ZEPETOScript เพื่อเรียกข้อมูลจาก ZepetoScriptableObject
นำเข้า ZepetoScriptableObject จาก ZEPETOScript และนำเข้าประเภทข้อมูลที่คุณได้ประกาศไว้ด้วย
import { ZepetoScriptableObject } from 'ZEPETO.Script';
import PlayerScriptObjectDef from './playerDefine/PlayerScriptObjectDef';

ประกาศ ZepetoScriptableObject เป็นคุณสมบัติใน ZEPETOScript.
public player: ZepetoScriptableObject<PlayerScriptObjectDef>;
public enemy: ZepetoScriptableObject<PlayerScriptObjectDef>;
เปิดหน้าต่าง Inspector ใน ZEPETOScript เพื่อกำหนดค่าให้กับคุณสมบัติของ ZepetoScriptableObject ตามที่แสดงด้านล่าง.

ตัวอย่างนี้แสดงให้เห็นว่าคุณสามารถใช้ ZepetoScriptableObject และเข้าถึงค่าของมันได้อย่างไร.
// การเข้าถึงโดยตรงตามชื่อ
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(`ตำแหน่งผู้เล่น : (x:${playerPosition.x}, y:${playerPosition.y}, z:${playerPosition.z})`);
// ประเภททั่วไปสามารถเข้าถึงสมาชิกของคลาส
console.log(`ตำแหน่งศัตรู : (x:${monsterState.position.x}, y:${monsterState.position.y}, z:${monsterState.position.z})`);
ตรวจสอบตัวอย่างโค้ดทั้งหมดสำหรับ ScriptableObject.
import { Vector3 } from 'UnityEngine';
import { ZepetoScriptBehaviour, ZepetoScriptableObject } from 'ZEPETO.Script';
// นำเข้าคำนิยามประเภท scriptable object
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})`);
}
}