---
title: GameObjects dan Komponen
slug: world-sdk-guide-id/gameobjects-dan-komponen
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

Di dunia ini, sangat umum untuk membuat objek atau memodifikasi atau menambahkan komponen tertentu ke objek.

ZEPETOScript mendukung antarmuka yang sama seperti yang digunakan dalam skrip Unity.

## Contoh Dasar GameObject dan Komponen

Membuat dan menghapus objek permainan:

:::CodeblockTabs
GameObject

```typescript
// GameObject Buat
const tempObj = new GameObject();
const obj = Object.Instantiate(tempObj);
 
// GameObject Hancurkan
Object.Destroy(obj);
```
:::

Untuk mendapatkan komponen GameObjects atau menambahkan yang baru, gunakan GetComponent atau AddComponent.

:::CodeblockTabs
Komponen

```typescript
// GetComponent dengan Generik
const myTransform = this.GetComponent<Transform>();
 
// AddComponent dengan Generik
const animator = this.gameObject.AddComponent<Animator>();
```
:::



Periksa contoh kode lengkap untuk Komponen GameObject.

Berikut adalah contoh yang mencakup pembuatan dan modifikasi properti GameObject, penambahan komponen, dan penghancuran.

:::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() {
 
        // Buat GameObject kosong
        const tempObj = new GameObject();
        this._testObject = Object.Instantiate(tempObj) as GameObject;
 
        // Ubah nama objek
        this._testObject.name = "TestObject";
 
        // Ubah informasi transform objek
        this._testObject.transform.position = new Vector3(3,3,3);
 
        // Lampirkan komponen ke objek
        this._testObject.gameObject.AddComponent<Animator>();
 
        // Contoh penggunaan GetComponent
        const animator = this._testObject.GetComponent<Animator>();
        if(animator != null) {
            console.log("GetComponent Sukses");
        }
 
        // Hancurkan objek setelah 5 detik menggunakan coroutine
        this.StartCoroutine(this.DestroyObject());
 
    }
 
    *DestroyObject() {
        yield new WaitForSeconds(5);
 
        // Hancurkan GameObject
        Object.Destroy(this._testObject);
    }
}  
```
:::



## Memanfaatkan Find

Metode Find terkait juga mendukung gaya antarmuka yang sama dalam ZEPETOScript seperti dalam skrip Unity.

| Metode                              | Deskripsi                                                                                                                                                                                                                                          |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| GameObject.Find()                   | - Ini menemukan dan mengembalikan objek GameObject aktif berdasarkan nama di Scene saat ini.<br />- Mengembalikan null jika tidak ditemukan.                                                                                                       |
| GameObject.FindGameObjectWithTag()  | - Ini menemukan dan mengembalikan objek GameObject aktif berdasarkan tag di Scene saat ini.<br />- Menemukan dan mengembalikan objek pertama yang cocok dengan tag yang ditentukan di antara objek aktif, mengembalikan null jika tidak ditemukan. |
| GameObject.FindGameObjectsWithTag() | - Menemukan semua objek GameObject aktif dengan tag tertentu di Scene saat ini dan mengembalikannya sebagai array.<br />- Mengembalikan array kosong jika tidak ada yang ditemukan.                                                                |

Untuk contoh, atur Scene sebagai berikut:

- Tambahkan beberapa objek 3D dan tentukan semua Tag mereka sebagai 3D.
- Buat Objek Kosong untuk melampirkan skrip, dan ubah namanya menjadi 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() {    
        // Menemukan GameObject target dengan nama yang ditentukan.
        // Jika beberapa GameObject memiliki nama yang sama, yang pertama ditemukan akan dikembalikan.
        this.tempObj1 = GameObject.Find("Cube");
        if(this.tempObj1 != null) {
            console.log("GameObject Temukan Sukses");
        }
 
        // Menemukan GameObject target dengan tag yang ditentukan.
        // Jika beberapa GameObject memiliki tag yang sama, yang pertama ditemukan akan dikembalikan.
        this.tempObj2 = GameObject.FindGameObjectWithTag("3D");
        if(this.tempObj2 != null) {
            console.log("FindGameObjectWithTag Sukses");
        }
 
        // Mengembalikan array GameObject yang memiliki tag yang ditentukan.
        this.tempObj3 = GameObject.FindGameObjectsWithTag("3D");
        if(this.tempObj3 != null) {
            console.log("FindGameObjectsWithTag Sukses");
        }
    }
}
```
:::



- Inspektor kosong ketika Anda menambahkan skrip di objek FindSample.

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



- Tekan tombol Putar untuk menjalankannya, dan Anda dapat mengonfirmasi di jendela Inspektor bahwa setiap objek telah ditugaskan dan memeriksa keberhasilan menemukan objek melalui jendela konsol.

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

## Membuat Prefab

Mari kita eksplorasi cara membuat prefab selama runtime.

- Pertama, tambahkan objek 3D > Kubus ke dalam Scene.

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



- Tekan Tambah Komponen di inspector Kubus, dan tambahkan Rigidbody.

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



- Kemudian seret Kubus ke area proyek untuk menjadikannya prefab.

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



- Karena kita akan menggunakan Prefab, hapus Kubus di Scene.



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

- Silakan tulis skrip di bawah ini.

:::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;
            // Buat klon
            const clone = Object.Instantiate(this.clonePrefab) as GameObject;
             
            // Atur tinggi objek klon
            clone.transform.position = new Vector3(0, 10, 0);
             
            // Hancurkan setelah 5 detik pembuatan
            GameObject.Destroy(clone, 5);
            yield new WaitForSeconds(1);
        }
    }
}

```
:::

- Kemudian kembali ke editor Unity, seret prefab ke inspector skrip untuk menambahkannya.

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



- Tekan tombol play untuk memeriksa bahwa objek 3D dibuat dan jatuh dari atas setiap detik.

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

Klik tautan di bawah ini untuk mempelajari lebih lanjut tentang GameObjects dan Komponen Unity yang ditawarkan oleh ZEPETOScript.



:::hint{type="info"}
**📘 Membuat 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"}
**📘 Menghancurkan 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"}
**📘 Menggunakan komponen**
[https://docs.unity3d.com/kr/current/Manual/UsingComponents.html](https://docs.unity3d.com/kr/current/Manual/UsingComponents.html)
:::

