OnEnable ve OnDisable
Coddy'nin Unity Journey'sinin Unity'de Script Yazmanın Temelleri bölümünün bir parçası. Ders 57 / 67.
OnEnable(), bir betik etkin hâle geldiğinde her seferinde çalışır: nesnesi ilk kez göründüğünde (Awake()'den hemen sonra) ve nesne SetActive(true) ile her gösterildiğinde veya betik enabled = true ile yeniden etkinleştirildiğinde. OnDisable(), nesne her gizlendiğinde, betik devre dışı bırakıldığında veya nesne yok edildiğinde çalışır.
Başka bir betiğin SetActive ile açıp kapattığı bir portal, kendi durumunu bildirebilir:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}Sahne başladığında portal Portal open mesajını 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 kapama işlemleri başka bir nesnedeki betik tarafından yapılır.
Görev
OrtaSwitchable betiği, Player'ın üzerinde ve başlangıçta gizli olan kalkanı Bubble'ın üzerinde bulunuyor. Player üzerinde target, Bubble'dır ve Space, Bubble'ı açıp kapatır; bu kısım yazılmıştır.
Her Switchable'ın kendisi hakkında bilgi vermesini sağla:
- her açıldığında, sayaca 1 ekle ve adını,
onifadesini ve sayacı parantez içinde günlüğe yazdır; örneğinBubble on (2); - her kapandığında, adını ve
offifadesini günlüğe yazdır:Bubble off.
Oyun başladığında Player, Player on (1) ifadesini günlüğe yazdırır: o da açılır. Play'e bas, birkaç kez Space'e bas, ardından Check'e 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: sayacı artır ve "<name> on (<count>)" kaydını oluştur
// Her kapatıldığında: "<name> off" kaydını oluştur
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Script Yazmanın Temelleri bölümündeki tüm dersler
1İlk Betiğiniz
Merhaba, UnityKüpü YerleştirHer Karede Hareket EtHer Saniye DönTuşlarla Yön VerÖzet: Küpü Sür4Vektörler
Vektörleri ToplamaYönlerYerel ve Dünya UzayıÇapraz HızNesneler Arasındaki MesafeVector3 Bir YapıdırÖzet: Drone Pilotu7Proje: Yıldızı Yakala
YakalayıcıDüşen Bir Yıldız10Betik Yaşam Döngüsü
Awake ve StartUpdate ve LateUpdateOnEnable ve OnDisableYaşam Döngüsü SırasıÖzet: Yaşam Döngüsü Günlükleyicisi5Dönüşümler ve Hiyerarşi
Ebeveynler ve ÇocuklarÖlçekNesnelere BakışBir Noktaya Doğru HareketTekrar: Yörüngedeki Ay6GameObject'ler ve Bileşenler
Inspector'daki ReferanslarBir Bileşen AlEksik BileşenlerBir Bileşen EkleRequireComponentGöster ve GizleÖzet: Işık Anahtarı