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

The `ref` dan `out` kata kunci dalam C# digunakan saat mengoperasikan referensi ke variabel atau struktur ke metode.

Dalam TypeScript, kata kunci ini tidak tersedia, tetapi dalam ZEPETOScript, Anda dapat mencapai fungsionalitas serupa menggunakan `$ref` dan `$unref`.

| Fungsi            | Deskripsi                                                        |
| ----------------- | ---------------------------------------------------------------- |
| $ref(x?\:T):$Ref  | Membuat referensi untuk parameter                                |
| $unref(x:$Ref)\:T | Melepaskan referensi dari parameter dan mengembalikan nilai asli |



Untuk contoh, mari kita siapkan sebuah Scene sebagai berikut:

- Tambahkan objek 3D, Kubus, ke dalam Adegan.

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



- Di Inspector untuk Kubus yang ditambahkan, klik "Tambahkan Komponen" dan tambahkan Rigidbody.

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



- Tambahkan GameObject Kosong ke dalam Scene.
- Tulis skrip RefSample di bawah ini dan tambahkan ke GameObject yang dibuat di langkah 3.

```typescript
import { GameObject, Rigidbody } from 'UnityEngine'
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import TestScript from './TestScript';
 
export default class RefSample extends ZepetoScriptBehaviour {
 
    Start() {   
        // Dapatkan GameObject yang bernama "Cube"
        const testObject = GameObject.Find("Cube");
         
        // Dapatkan Komponen Rigidbody dari Objek "Cube"
        const testComponent = GameObject.Find("Cube").GetComponent<Rigidbody>();
         
        // Dapatkan Komponen TestScript dari Objek "Cube"
        const testScript = GameObject.Find("Cube").GetComponent<TestScript>();
 
        // Buat referensi ke komponen dan objek
        let tempObj = $ref(testObject);
        let tempComponent = $ref(testComponent);
        let tempScript = $ref(testScript);
 
        // Periksa apakah komponen Rigidbody tidak null
        if(tempComponent != null) {
            // Akses nilai aktual dari referensi tersebut
            let component = $unref(tempComponent);
            console.log(`Nama Komponen : ${component}`);
        }
 
        // Periksa apakah komponen TestScript tidak null
        if(tempScript != null) {
            // Akses nilai aktual dari referensi tersebut
            let script = $unref(tempScript);
            script.DoTest();
        }
 
        // Periksa apakah referensi GameObject tidak null
        if(tempObj != null) {
            // Akses nilai aktual dari referensi tersebut
            let objName = $unref(tempObj);
            console.log(`Nama tempObj : ${objName.name}`);
        }
    }
}
```



- Buat ZEPETOScript lain dan tulis TestScript di bawah ini.

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
 
export default class TestScript extends ZepetoScriptBehaviour {
 
    DoTest() {   
        console.log(`DoTest() dari TestScript dieksekusi.`);
    }
}
```



- Seret dan sambungkan TestScript ke Inspector Cube.
- Klik tombol \[▶︎(play)] untuk mengamati hasilnya.
- Anda dapat memeriksa keberhasilan referensi objek, komponen Rigidbody, dan komponen ZEPETOScript di jendela log konsol.

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

