ScriptableObject
ZepetoScriptableObject mendukung Unity ScriptableObject. ZepetoScriptableObject adalah wadah data yang menyimpan sejumlah besar data, seperti pengaturan data dunia dan opsi karakter.
Untuk membuat file ZepetoScriptableObject baru, klik ikon [+] di sudut kiri atas panel Proyek, atau klik Aset → Buat → ZEPETO → ScriptableObject.

ZepetoScriptableObject yang baru dibuat perlu dihubungkan dengan membuat skrip dengan kelas data yang ditentukan.

Buat file ZEPETOScript baru, dan deklarasikan data yang akan Anda gunakan sebagai variabel anggota.
Berikut adalah beberapa contoh kode yang dapat digunakan sebagai data.
import { Vector3, Quaternion } from 'UnityEngine';
export default class PlayerScriptObjectDef {
public name: string;
public hp: number;
public position: Vector3;
public rotation: Vector3;
}
Ketika Anda menghubungkan ZEPETOScript dengan kelas data yang ditentukan ke ZepetoScriptableObjects, Anda akan melihat data tersebut di jendela Inspector, seperti yang ditunjukkan di bawah ini.

Buat file ZEPETOScript untuk memanggil data dari ZepetoScriptableObject.
Impor ZepetoScriptableObject dari ZEPETOScript dan impor juga tipe data yang telah Anda deklarasikan.
import { ZepetoScriptableObject } from 'ZEPETO.Script';
import PlayerScriptObjectDef from './playerDefine/PlayerScriptObjectDef';

Deklarasikan ZepetoScriptableObject sebagai properti di ZEPETOScript.
public player: ZepetoScriptableObject<PlayerScriptObjectDef>;
public enemy: ZepetoScriptableObject<PlayerScriptObjectDef>;
Buka jendela Inspector di ZEPETOScript untuk menetapkan nilai untuk properti ZepetoScriptableObject, seperti yang ditunjukkan di bawah ini.

Contoh ini menunjukkan bagaimana Anda dapat menggunakan ZepetoScriptableObject dan mengakses nilainya.
// Akses langsung berdasarkan nama
console.log(`nama pemain : ${this.player["name"]}`);
console.log(`hp pemain : ${this.player["hp"]}`);
console.log(`posisi pemain : (${this.player["position"].x}, ${this.player["position"].y}, ${this.player["position"].z})`);
console.log(`rotasi pemain : (${this.player["rotation"].x}, ${this.player["rotation"].y}, ${this.player["rotation"].z})`);
// Panggilan data generik
let monsterState = this.enemy.targetObject;
console.log(`nama musuh : ${monsterState.name}`);
console.log(`hp musuh : ${monsterState.hp}`);
console.log(`posisi musuh : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
console.log(`rotasi musuh : (${monsterState.rotation.x}, ${monsterState.rotation.y}, ${monsterState.rotation.z})`);
Untuk mengakses tipe primitif dari variabel anggota, deklarasikan sebagai tipe generik atau ubah menggunakan casting tipe, seperti contoh yang ditunjukkan di bawah.
// Casting tipe
let playerPosition = this.player["position"] as Vector3;
console.log(`posisi pemain : (x:${playerPosition.x}, y:${playerPosition.y}, z:${playerPosition.z})`);
// Tipe generik dapat mengakses anggota kelas
console.log(`posisi musuh : (x:${monsterState.position.x}, y:${monsterState.position.y}, z:${monsterState.position.z})`);
Periksa contoh kode lengkap untuk ScriptableObject.
import { Vector3 } from 'UnityEngine';
import { ZepetoScriptBehaviour, ZepetoScriptableObject } from 'ZEPETO.Script';
// Impor definisi tipe objek scriptable
import PlayerScriptObjectDef from './playerDefine/PlayerScriptObjectDef';
export default class ScriptableObjectSample extends ZepetoScriptBehaviour {
public player: ZepetoScriptableObject;
// Panggilan tipe generik
public enemy: ZepetoScriptableObject<PlayerScriptObjectDef>;
Awake() {
// Akses langsung berdasarkan nama
console.log(`nama pemain : ${this.player["name"]}`);
console.log(`hp pemain : ${this.player["hp"]}`);
console.log(`posisi pemain : (${this.player["position"].x}, ${this.player["position"].y}, ${this.player["position"].z})`);
console.log(`rotasi pemain : (${this.player["rotation"].x}, ${this.player["rotation"].y}, ${this.player["rotation"].z})`);
// Panggilan data generik
let monsterState = this.enemy.targetObject;
console.log(`nama musuh : ${monsterState.name}`);
console.log(`hp musuh : ${monsterState.hp}`);
console.log(`posisi musuh : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
console.log(`rotasi musuh : (${monsterState.rotation.x}, ${monsterState.rotation.y}, ${monsterState.rotation.z})`);
// Casting tipe
let playerPosition = this.player["position"] as Vector3;
console.log(`posisi pemain : (${playerPosition.x}, ${playerPosition.y}, ${playerPosition.z})`);
// Tipe generik dapat mengakses anggota kelas
console.log(`posisi musuh : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
}
}