$ref & $unref
5 min
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.

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

- Ajoutez un GameObject vide à la scène.
- Écrivez le script RefSample ci-dessous et ajoutez-le au GameObject créé à l'étape 3.
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.
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.
