ScriptableObject
ZepetoScriptableObject prend en charge Unity ScriptableObject. ZepetoScriptableObject est un conteneur de données qui sauvegarde de grandes quantités de données, telles que les paramètres de données du monde et les options de personnage.
Pour créer un nouveau fichier ZepetoScriptableObject, cliquez sur l'icône [+] dans le coin supérieur gauche du panneau Projet, ou cliquez sur Assets → Créer → ZEPETO → ScriptableObject.

Le ZepetoScriptableObject nouvellement créé doit être connecté en créant des scripts avec une classe de données définie.

Créez un nouveau fichier ZEPETOScript et déclarez les données que vous utiliserez comme variables membres.
Voici quelques exemples de codes qui peuvent être utilisés comme données.
import { Vector3, Quaternion } from 'UnityEngine';
export default class PlayerScriptObjectDef {
public name: string;
public hp: number;
public position: Vector3;
public rotation: Vector3;
}
Lorsque vous liez le ZEPETOScript avec la classe de données définie aux ZepetoScriptableObjects, vous verrez ces données dans la fenêtre Inspector, comme montré ci-dessous.

Créez un fichier ZEPETOScript pour appeler des données à partir du ZepetoScriptableObject.
Importez le ZepetoScriptableObject depuis le ZEPETOScript et importez également le type de données que vous avez déclaré.
import { ZepetoScriptableObject } from 'ZEPETO.Script';
import PlayerScriptObjectDef from './playerDefine/PlayerScriptObjectDef';

Déclarez les ZepetoScriptableObject comme propriétés dans le ZEPETOScript.
public player: ZepetoScriptableObject<PlayerScriptObjectDef>;
public enemy: ZepetoScriptableObject<PlayerScriptObjectDef>;
Ouvrez la fenêtre Inspecteur dans ZEPETOScript pour attribuer des valeurs aux propriétés ZepetoScriptableObject, comme indiqué ci-dessous.

Cet exemple montre comment vous pouvez utiliser le ZepetoScriptableObject et accéder à ses valeurs.
// Accès direct par nom
console.log(`nom du joueur : ${this.player["name"]}`);
console.log(`hp du joueur : ${this.player["hp"]}`);
console.log(`position du joueur : (${this.player["position"].x}, ${this.player["position"].y}, ${this.player["position"].z})`);
console.log(`rotation du joueur : (${this.player["rotation"].x}, ${this.player["rotation"].y}, ${this.player["rotation"].z})`);
// Appel de données génériques
let monsterState = this.enemy.targetObject;
console.log(`nom de l'ennemi : ${monsterState.name}`);
console.log(`hp de l'ennemi : ${monsterState.hp}`);
console.log(`position de l'ennemi : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
console.log(`rotation de l'ennemi : (${monsterState.rotation.x}, ${monsterState.rotation.y}, ${monsterState.rotation.z})`);
Pour accéder à un type primitif de variable membre, déclarez-le comme un type générique ou convertissez-le en utilisant le casting de type, comme dans l'exemple ci-dessous.
// Casting de type
let playerPosition = this.player["position"] as Vector3;
console.log(`position du joueur : (x:${playerPosition.x}, y:${playerPosition.y}, z:${playerPosition.z})`);
// Le type générique peut accéder aux membres de la classe
console.log(`position de l'ennemi : (x:${monsterState.position.x}, y:${monsterState.position.y}, z:${monsterState.position.z})`);
Vérifiez l'exemple de code complet pour ScriptableObject.
import { Vector3 } from 'UnityEngine';
import { ZepetoScriptBehaviour, ZepetoScriptableObject } from 'ZEPETO.Script';
// Importer la définition du type d'objet scriptable
import PlayerScriptObjectDef from './playerDefine/PlayerScriptObjectDef';
export default class ScriptableObjectSample extends ZepetoScriptBehaviour {
public player: ZepetoScriptableObject;
// Appel de type générique
public enemy: ZepetoScriptableObject<PlayerScriptObjectDef>;
Awake() {
// Accès direct par nom
console.log(`nom du joueur : ${this.player["name"]}`);
console.log(`hp du joueur : ${this.player["hp"]}`);
console.log(`position du joueur : (${this.player["position"].x}, ${this.player["position"].y}, ${this.player["position"].z})`);
console.log(`rotation du joueur : (${this.player["rotation"].x}, ${this.player["rotation"].y}, ${this.player["rotation"].z})`);
// Appel de données génériques
let monsterState = this.enemy.targetObject;
console.log(`nom de l'ennemi : ${monsterState.name}`);
console.log(`hp de l'ennemi : ${monsterState.hp}`);
console.log(`position de l'ennemi : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
console.log(`rotation de l'ennemi : (${monsterState.rotation.x}, ${monsterState.rotation.y}, ${monsterState.rotation.z})`);
// Conversion de type
let playerPosition = this.player["position"] as Vector3;
console.log(`position du joueur : (${playerPosition.x}, ${playerPosition.y}, ${playerPosition.z})`);
// Le type générique peut accéder aux membres de la classe
console.log(`position de l'ennemi : (${monsterState.position.x}, ${monsterState.position.y}, ${monsterState.position.z})`);
}
}