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.
Tantangan
SedangBuat setiap Switchable melaporkan saat dinyalakan dan dimatikan.
- Tambahkan field
int count;danvoid OnEnable(): tambahkan 1 kecount, lalu catatname + " on (" + count + ")", sepertiBubble on (2). - Tambahkan
void OnDisable()yang mencatatname + " 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
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang Mengorbit12Siklus Hidup Skrip
Awake dan StartUpdate dan LateUpdateOnEnable dan OnDisableUrutan Siklus HidupRekap: Lifecycle LoggerLatihan sendiri: Playground Unity