GameObjects et Composants
Dans le monde, il est très courant de créer des objets ou de modifier ou d'ajouter des composants spécifiques à des objets.
ZEPETOScript prend en charge la même interface que celle utilisée dans le script Unity.
Exemples de base de GameObject et de Composant
Créer et supprimer des objets de jeu :
// GameObject Créer
const tempObj = new GameObject();
const obj = Object.Instantiate(tempObj);
// GameObject Détruire
Object.Destroy(obj);Pour obtenir les composants des GameObjects ou en ajouter de nouveaux, utilisez GetComponent ou AddComponent.
// GetComponent avec Générique
const myTransform = this.GetComponent<Transform>();
// AddComponent avec Générique
const animator = this.gameObject.AddComponent<Animator>();
Vérifiez l'exemple de code complet pour le Composant GameObject.
Voici un exemple qui couvre la création et la modification des propriétés de GameObject, l'ajout de composants et la destruction.
import { GameObject, Object, Transform, Animator, Vector3, WaitForSeconds } from 'UnityEngine';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
export default class GameObjectSample extends ZepetoScriptBehaviour {
private _testObject : GameObject;
Start() {
// Créer un GameObject vide
const tempObj = new GameObject();
this._testObject = Object.Instantiate(tempObj) as GameObject;
// Changer le nom de l'objet
this._testObject.name = "TestObject";
// Changer les informations de transformation de l'objet
this._testObject.transform.position = new Vector3(3,3,3);
// Attacher un composant à l'objet
this._testObject.gameObject.AddComponent<Animator>();
// Exemple d'utilisation de GetComponent
const animator = this._testObject.GetComponent<Animator>();
if(animator != null) {
console.log("GetComponent Succès");
}
// Détruire l'objet après 5 secondes en utilisant une coroutine
this.StartCoroutine(this.DestroyObject());
}
*DestroyObject() {
yield new WaitForSeconds(5);
// Détruire le GameObject
Object.Destroy(this._testObject);
}
}
Utiliser Find
Les méthodes Find associées prennent également en charge le même style d'interface dans ZEPETOScript que dans le script Unity.
Méthodes | Description |
|---|---|
GameObject.Find() | - Il trouve et renvoie un objet GameObject actif basé sur le nom dans la scène actuelle. - Renvoie null si non trouvé. |
GameObject.FindGameObjectWithTag() | - Il trouve et renvoie un objet GameObject actif basé sur le tag dans la scène actuelle. - Trouve et renvoie le premier objet correspondant au tag spécifié parmi les objets actifs, renvoie null si non trouvé. |
GameObject.FindGameObjectsWithTag() | - Trouve tous les objets GameObject actifs avec un tag spécifique dans la scène actuelle et les renvoie sous forme de tableau. - Renvoie un tableau vide si aucun n'est trouvé. |
Pour l'exemple, configurez la scène comme suit :
- Ajoutez plusieurs objets 3D et spécifiez tous leurs tags comme 3D.
- Créez un objet vide pour attacher le script, et renommez-le en FindSample.

import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { GameObject, Transform } from 'UnityEngine';
export default class FindSample extends ZepetoScriptBehaviour {
public tempObj1: GameObject;
public tempObj2: GameObject;
public tempObj3: GameObject[];
Start() {
// Trouve le GameObject cible avec le nom spécifié.
// Si plusieurs GameObjects ont le même nom, le premier trouvé sera retourné.
this.tempObj1 = GameObject.Find("Cube");
if(this.tempObj1 != null) {
console.log("Succès de la recherche du GameObject");
}
// Trouve le GameObject cible avec le tag spécifié.
// Si plusieurs GameObjects ont le même tag, le premier trouvé sera retourné.
this.tempObj2 = GameObject.FindGameObjectWithTag("3D");
if(this.tempObj2 != null) {
console.log("Succès de FindGameObjectWithTag");
}
// Retourne un tableau de GameObjects qui ont le tag spécifié.
this.tempObj3 = GameObject.FindGameObjectsWithTag("3D");
if(this.tempObj3 != null) {
console.log("Succès de FindGameObjectsWithTag");
}
}
}
- L'inspecteur est vide lorsque vous ajoutez un script dans l'objet FindSample.

- Appuyez sur le bouton Play pour l'exécuter, et vous pouvez confirmer dans la fenêtre de l'Inspecteur que chaque objet a été assigné et vérifier le succès de la recherche d'objets via la fenêtre de la console.

Création de Prefabs
Explorons comment créer des prefabs pendant l'exécution.
- Tout d'abord, ajoutez un objet 3D > Cube à la scène.

- Appuyez sur Ajouter un composant dans l'inspecteur du Cube, et ajoutez Rigidbody.

- Ensuite, faites glisser le Cube vers la zone de projet pour en faire un prefab.

- Veuillez écrire le script ci-dessous.
import { GameObject, Object, Vector3, WaitForSeconds } from 'UnityEngine';
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
export default class CloneSample extends ZepetoScriptBehaviour {
public clonePrefab : GameObject;
Start() {
this.StartCoroutine(this.DoRoutine());
}
*DoRoutine() {
while(true) {
yield null;
// Create a clone
const clone = Object.Instantiate(this.clonePrefab) as GameObject;
// Set the height of the clone object
clone.transform.position = new Vector3(0, 10, 0);
// Destroy it after 5 seconds of creation
GameObject.Destroy(clone, 5);
yield new WaitForSeconds(1);
}
}
}
- Ensuite, retournez à l'éditeur Unity, faites glisser le prefab dans l'inspecteur de script pour l'ajouter.

- Appuyez sur le bouton de lecture pour vérifier qu'un objet 3D est créé et tombe d'en haut chaque seconde.

Cliquez sur les liens ci-dessous pour en savoir plus sur les GameObjects et les Composants Unity offerts par ZEPETOScript.
📘 Création de GameObjects https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Instantiate.html
📘 Destruction de GameObjects https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Destroy.html
📘 Utilisation des composants https://docs.unity3d.com/kr/current/Manual/UsingComponents.html
