---
title: $ref & $unref
slug: world-sdk-guide-fr/dollarref-and-dollarunref
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

Le `ref` et `out` mots-clés en C# sont utilisés lors du passage de références à des variables ou des structures aux méthodes.

Dans TypeScript, ces mots-clés ne sont pas disponibles, mais dans ZEPETOScript, vous pouvez obtenir une fonctionnalité similaire en utilisant `$ref` et `$unref`.

| Fonctions         | Description                                                       |
| ----------------- | ----------------------------------------------------------------- |
| $ref(x?\:T):$Ref  | Crée une référence pour un paramètre                              |
| $unref(x:$Ref)\:T | Libère la référence d'un paramètre et renvoie la valeur originale |



Pour l'exemple, configurons une scène comme suit :

- Ajoutez un objet 3D, Cube, à la scène.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-NdO0i7dLaDpFX1zUPm-6p-20240904-102412.png" size="52" width="592" height="742" position="center" showCaption="false"}



- Dans l'inspecteur pour le Cube ajouté, cliquez sur "Ajouter un composant" et ajoutez un Rigidbody.

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



- Ajoutez un GameObject vide à la scène.
- Écrivez le script RefSample ci-dessous et ajoutez-le au GameObject créé à l'étape 3.

```typescript
import { GameObject, Rigidbody } from 'UnityEngine'
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import TestScript from './TestScript';
 
export default class RefSample extends ZepetoScriptBehaviour {
 
    Start() {   
        // Obtenez le GameObject nommé "Cube"
        const testObject = GameObject.Find("Cube");
         
        // Obtenez le composant Rigidbody de l'objet "Cube"
        const testComponent = GameObject.Find("Cube").GetComponent<Rigidbody>();
         
        // Obtenez le composant TestScript de l'objet "Cube"
        const testScript = GameObject.Find("Cube").GetComponent<TestScript>();
 
        // Créez des références aux composants et à l'objet
        let tempObj = $ref(testObject);
        let tempComponent = $ref(testComponent);
        let tempScript = $ref(testScript);
 
        // Vérifiez si le composant Rigidbody n'est pas nul
        if(tempComponent != null) {
            // Accédez à la valeur réelle de cette référence
            let component = $unref(tempComponent);
            console.log(`Nom du composant : ${component}`);
        }
 
        // Vérifiez si le composant TestScript n'est pas nul
        if(tempScript != null) {
            // Accédez à la valeur réelle de cette référence
            let script = $unref(tempScript);
            script.DoTest();
        }
 
        // Vérifiez si la référence GameObject n'est pas nulle
        if(tempObj != null) {
            // Accédez à la valeur réelle de cette référence
            let objName = $unref(tempObj);
            console.log(`Nom de tempObj : ${objName.name}`);
        }
    }
}
```



- Créez un autre ZEPETOScript et écrivez le TestScript ci-dessous.

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
 
export default class TestScript extends ZepetoScriptBehaviour {
 
    DoTest() {   
        console.log(`L'exécution de DoTest() de TestScript.`);
    }
}
```



- Faites glisser et connectez TestScript à l'Inspecteur du Cube.
- Cliquez sur le bouton \[▶︎(lecture)] pour observer les résultats.
- Vous pouvez vérifier le succès de la référence aux objets, aux composants Rigidbody et aux composants ZEPETOScript dans la fenêtre de journalisation de la console.

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

