Menu
CoddyTech

Tambahkan Komponen

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 46 dari 85.

gameObject.AddComponent<T>() menambahkan komponen baru bertipe T ke objek saat game berjalan, lalu mengembalikannya agar kamu bisa mengaturnya pada baris berikutnya. Komponen ini menjadi bagian dari GameObject, yang diakses skrip melalui gameObject. Api unggun ini memberi dirinya sendiri cahaya oranye hangat saat game dimulai:

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

Komponen yang ditambahkan dengan cara ini akan bertahan selama game berjalan. Hentikan tombol “Main”, lalu objek akan kembali ke kondisi yang tersimpan di scene, tanpa Light. Skripmu sendiri juga merupakan komponen: gameObject.AddComponent<Spinner>() menambahkan Spinner yang mulai berjalan seperti skrip lainnya.

Sebagian besar komponen dapat ditambahkan lebih dari sekali, tetapi beberapa tidak: sebuah objek hanya dapat memiliki paling banyak satu Rigidbody, dan permintaan untuk menambahkan yang kedua akan menampilkan peringatan di Console, yaitu Can't add component 'Rigidbody'. Kode yang mungkin berjalan lebih dari sekali akan memeriksa apakah objek sudah memiliki komponen tersebut sebelum menambahkannya.

challenge icon

Tantangan

Sedang

Tombol Space menggoyangkan pohon palem, lalu kelapa jatuh.

  1. Di Update(), saat Input.GetKeyDown(KeyCode.Space), tambahkan Rigidbody dengan gameObject.AddComponent<Rigidbody>().
  2. Tambahkan hanya jika kelapa belum memilikinya: !TryGetComponent(out Rigidbody rb). Menekan Space untuk kedua kalinya tidak akan menambahkan Rigidbody kedua.

Tekan tombol “Main”, lalu tekan Space: kelapa jatuh ke pasir. Kemudian tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: tambahkan Rigidbody jika kelapanya belum memilikinya
    }
}

Semua pelajaran di Dasar-Dasar Scripting Unity

Latihan sendiri: Playground Unity