Menu
CoddyTech

OnEnable dan OnDisable

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

OnEnable() berjalan setiap kali skrip menjadi aktif: saat objeknya pertama kali muncul (tepat setelah Awake()), dan setiap kali objek ditampilkan dengan SetActive(true) atau skrip diaktifkan kembali dengan enabled = true. OnDisable() berjalan setiap kali objek disembunyikan, skrip dinonaktifkan, atau objek dihancurkan.

Sebuah portal yang dibuka dan ditutup oleh skrip lain dengan SetActive dapat melaporkan keadaannya sendiri:

void OnEnable()
{
    Debug.Log("Portal open");
}

void OnDisable()
{
    Debug.Log("Portal closed");
}

Portal mencatat Portal open saat adegan dimulai. Menyembunyikan lalu menampilkannya kembali akan mencatat Portal closed, lalu Portal open, sementara Awake() dan Start() tidak berjalan untuk kedua kalinya. Jadi, kode yang harus dijalankan setiap kali portal muncul, seperti mengatur ulang penghitung waktu atau menghitung kunjungan, diletakkan di OnEnable(). Saat portal tersembunyi, Update()-nya tidak berjalan. Karena itu, pembukaan dan penutupan dilakukan oleh skrip pada objek lain.

challenge icon

Tantangan

Sedang

Buat setiap Switchable melaporkan saat dinyalakan dan dimatikan.

  1. Tambahkan field int count; dan void OnEnable(): tambahkan 1 ke count, lalu catat name + " on (" + count + ")", seperti Bubble on (2).
  2. Tambahkan void OnDisable() yang mencatat name + " off".

Tekan tombol “Main” dan tekan Space: Console menampilkan Player on (1), lalu Bubble on (1) dan Bubble off. Lalu tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class Switchable : MonoBehaviour
{
    public GameObject target;

    void Update()
    {
        if (target != null && Input.GetKeyDown(KeyCode.Space))
        {
            target.SetActive(!target.activeSelf);
        }
    }

    // Setiap kali object ini diaktifkan: hitung jumlahnya dan catat "<name> on (<count>)"
    // Setiap kali object ini dinonaktifkan: catat "<name> off"
}

Semua pelajaran di Dasar-Dasar Scripting Unity

Latihan sendiri: Playground Unity