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.
Tantangan
SedangSkrip 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, contohnyaBubble 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"
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar Scripting Unity
1Skrip Pertamamu
Halo, UnityLetakkan KubusBergerak di Setiap FrameBerputar Setiap DetikKendalikan dengan TombolRingkasan: Kendarai Kubus4Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak antara BendaVector3 adalah StructRingkasan: Pilot Drone7Proyek: Tangkap Bintang
Si PenangkapBintang Jatuh10Siklus Hidup Skrip
Awake dan StartUpdate dan LateUpdateOnEnable dan OnDisableUrutan Siklus HidupUlasan: Pencatat Siklus Hidup5Transformasi dan Hierarki
Objek Induk dan AnakSkalaMenghadap ke ObjekBergerak Menuju TitikRangkuman: Bulan yang Mengorbit6GameObject dan Komponen
Referensi di InspectorMendapatkan KomponenKomponen yang HilangMenambahkan KomponenRequireComponentTampilkan dan SembunyikanRangkuman: Sakelar Lampu