OnEnable ve OnDisable
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 72 / 85.
Bir betik etkin hâle geldiğinde OnEnable() her seferinde çalışır: nesnesi ilk kez göründüğünde (Awake() çağrısından hemen sonra) ve nesne SetActive(true) ile her gösterildiğinde ya da betik enabled = true ile yeniden etkinleştirildiğinde. Nesne her gizlendiğinde, betik devre dışı bırakıldığında veya nesne yok edildiğinde OnDisable() çalışır.
Başka bir betiğin SetActive ile açıp kapattığı bir portal, kendisiyle ilgili bilgi verebilir:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}Sahne başladığında portal Portal open mesajını günlüğe kaydeder. Portalı gizleyip yeniden göstermek, önce Portal closed, ardından Portal open mesajını kaydeder; Awake() ve Start() ise ikinci kez çalışmaz. Bu nedenle zamanlayıcıyı sıfırlamak veya ziyaretleri saymak gibi her görünüşte gerçekleşmesi gereken kodlar OnEnable() içine yazılır. Portal gizliyken Update() çalışmaz; bu yüzden açma ve kapatma işlemi başka bir nesnedeki betik tarafından yapılır.
Görev
OrtaHer Switchable açılıp kapandığında bunu bildirsin.
- Bir
int count;alanı vevoid OnEnable()ekle:countdeğerini 1 artır, ardındanname + " on (" + count + ")"ifadesini kaydet; örneğinBubble on (2). name + " off"ifadesini kaydedenvoid OnDisable()ekle.
“Oyna” düğmesine bas ve Space tuşuna bas: Konsol önce Player on (1), ardından Bubble on (1) ve Bubble off gösterir. Sonra “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class Switchable : MonoBehaviour
{
public GameObject target;
void Update()
{
if (target != null && Input.GetKeyDown(KeyCode.Space))
{
target.SetActive(!target.activeSelf);
}
}
// Bu nesne her açıldığında: açılma sayısını artır ve "<name> on (<count>)" mesajını günlüğe kaydet
// Her kapatıldığında: "<name> off" mesajını günlüğe kaydet
}
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1Unity'de C# Temelleri
Merhaba, UnityDeğişkenlerOndalık Sayılar için f GerekirKonsolda MetinHatırlayan DeğişkenlerEğer ve DeğilseSayıları KarşılaştırmaTekrar: Coin Collector4Girdi
Basılı, Basılı Tutulmuş, BırakılmışEksenlerAdlandırılmış DüğmelerFare DüğmeleriTekrar: Zıplama Yükleme7Döngüler ve Metotlar
for ile tekrarlamaİç içe döngülerBir metot yazmaYanıt veren metotlarDizilerTekrar: Merdiven10Nesneleri Bulma
Ada Göre BulEtiketlerTüre Göre BulReferanslar Bulmaktan İyidirUnity'de NullÖzet: En Yakın Madeni Para13Proje: Bloklardan Kaç
KoşucuGökyüzünden Bloklar5Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir Struct'tırTekrar: Drone Pilotu8GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı3Inspector
Inspector AlanlarıSerializeFieldOndalıklı Sayılar ve MathfInspector ÖzellikleriTekrar: Asansör6Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarBayrağı Göndere ÇekÖlçekNesnelere BakBir Noktaya Doğru Hareket EtTekrar: Yörüngedeki Ay9Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız12Betiğin Yaşam Döngüsü
Awake ve StartUpdate ve LateUpdateOnEnable ve OnDisableYaşam Döngüsü SırasıTekrar: Yaşam Döngüsü KaydedicisiKendi başına pratik yap: Unity playground