Menu
CoddyTech

OnEnable dan OnDisable

Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 57 dari 67.

OnEnable() dijalankan setiap kali sebuah script menjadi aktif: saat object-nya pertama kali muncul (tepat setelah Awake()), dan setiap kali object ditampilkan dengan SetActive(true) atau script diaktifkan kembali dengan enabled = true. OnDisable() dijalankan setiap kali object disembunyikan, script dinonaktifkan, atau object dihancurkan.

Portal yang dibuka dan ditutup oleh script lain dengan SetActive dapat melaporkan keadaannya sendiri:

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

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

Portal mencatat Portal open saat scene dimulai. Menyembunyikan lalu menampilkannya kembali akan mencatat Portal closed, lalu Portal open, sementara Awake() dan Start() tidak dijalankan untuk kedua kalinya. Jadi, kode yang harus dijalankan setiap kali portal muncul, seperti mengatur ulang timer atau menghitung kunjungan, ditulis di OnEnable(). Saat portal disembunyikan, Update() miliknya tidak dijalankan. Karena itu, proses membuka dan menutup dilakukan oleh script pada object lain.

challenge icon

Tantangan

Sedang

Skrip Switchable ada pada Player dan pada perisainya, Bubble, yang awalnya tersembunyi. Pada Player, target adalah Bubble, dan Space menyalakan serta mematikan Bubble; bagian itu sudah ditulis.

Buat setiap Switchable melaporkan statusnya sendiri:

  • setiap kali dinyalakan, tambahkan 1 ke penghitung dan catat namanya, on, serta hitungannya dalam tanda kurung siku, contohnya Bubble on (2);
  • setiap kali dimatikan, catat namanya dan off: Bubble off.

Saat game dimulai, Player mencatat Player on (1): Player juga dinyalakan. Tekan Play, tekan Space beberapa kali, lalu tekan Check.

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 berapa kali dan catat "<name> on (<count>)"
    // Setiap kali object ini dinonaktifkan: catat "<name> off"
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar Scripting Unity