---
title: GameObjects et Composants
slug: world-sdk-guide-fr/gameobjects-et-composants
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

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 :

:::CodeblockTabs
GameObject

```typescript
// 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.

:::CodeblockTabs
Composant

```typescript
// 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.

:::CodeblockTabs
GameObjectSample

```typescript
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.<br />- Renvoie null si non trouvé.                                                                                           |
| GameObject.FindGameObjectWithTag()  | - Il trouve et renvoie un objet GameObject actif basé sur le tag dans la scène actuelle.<br />- 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.<br />- 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.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-zzyzWZyF_39SRWiOi4pqT-20240904-102427.png)



:::CodeblockTabs
TypeScript

```typescript
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.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-brkQtTPkzO4PVeCeTWY0C-20240904-102427.png" size="66" width="484" height="554" position="center" showCaption="false"}



- 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.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-v0TXlzool-ExIjeoQtL2q-20240904-102427.png)

## 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.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-n8sQHSZS0g09ODQKdPMFn-20240904-102428.png" size="50" width="592" height="742" position="center" showCaption="false"}



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-uQQEDtu2B7HHrZZa09X1K-20240904-102428.png)



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

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-mzQZpGo5GJ00sZShBiWbC-20240904-102428.png" size="88" width="367" height="397" position="center" showCaption="false"}



- Puisque nous allons utiliser le Prefab, supprimez le Cube dans la scène.



  ::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-YGeJYJrbHhKghMigpQObo-20240904-102428.png" size="62" width="326" height="327" position="center" showCaption="false"}


- Veuillez écrire le script ci-dessous.

:::CodeblockTabs
TypeScript

```typescript
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.

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-ZwlrtxyGBbAFEh2eKJeg--20240904-102428.png)



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-WsJD59NBM4Q9x0R_24yiH-20240904-102428.gif)

Cliquez sur les liens ci-dessous pour en savoir plus sur les GameObjects et les Composants Unity offerts par ZEPETOScript.



:::hint{type="info"}
**📘 Création de GameObjects**
[https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Instantiate.html](https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Instantiate.html)
:::

:::hint{type="info"}
**📘 Destruction de GameObjects**
[https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Destroy.html](https://docs.unity3d.com/2020.3/Documentation/ScriptReference/Object.Destroy.html)
:::

:::hint{type="info"}
**📘 Utilisation des composants**
[https://docs.unity3d.com/kr/current/Manual/UsingComponents.html](https://docs.unity3d.com/kr/current/Manual/UsingComponents.html)
:::

