Unity'de MonoBehaviour yaşam döngüsü nasıl işler? Awake, OnEnable ve Start arasındaki fark nedir?

Cevap

Bir MonoBehaviour sahneye yüklendiğinde metotlar şu sırayla çağrılır:

  1. Awake: Nesne yüklenir yüklenmez, script devre dışı olsa bile (GameObject aktifse) bir kez çağrılır. Kendi referanslarını kurmak için kullanılır.
  2. OnEnable: Bileşen her etkinleştiğinde çağrılır. Event aboneliği için idealdir.
  3. Start: İlk Update'ten hemen önce, yalnızca bileşen etkinse bir kez çağrılır. Başka nesnelere bağımlı başlatma işleri burada yapılır.
  4. FixedUpdate / Update / LateUpdate: Her kare (FixedUpdate sabit fizik adımında).
  5. OnDisable / OnDestroy: Kapanış ve temizlik.
public class Player : MonoBehaviour
{
    Rigidbody rb;
    void Awake()     { rb = GetComponent<Rigidbody>(); }      // kendi bileşenlerim
    void OnEnable()  { GameEvents.OnDamage += TakeDamage; }    // abone ol
    void Start()     { transform.position = SpawnPoint.Instance.Position; } // diğer nesneler hazır
    void OnDisable() { GameEvents.OnDamage -= TakeDamage; }    // aboneliği bırak
    void TakeDamage(int amount) { /* ... */ }
}

Temel kural: Awake'te kendini, Start'ta başkalarını başlat. Farklı nesnelerin Awake'leri arasındaki sıra garanti değildir; gerekirse Script Execution Order ayarı kullanılır.

LateUpdate tüm Update'lerden sonra çalıştığı için kamera takibi gibi işler için uygundur.

  1. Unity'de Update, FixedUpdate ve LateUpdate arasındaki fark nedir?KolayUnity & C#Game Dev
  2. GetComponent çağrılarını neden önbelleğe almalısınız?KolayUnity & C#Game Dev
  3. Rigidbody, physics layer'lar ve raycast nasıl çalışır? FixedUpdate neden önemlidir?OrtaUnity & C#Game Dev
  4. C# delegate, event ve UnityEvent arasındaki farklar nelerdir?OrtaUnity & C#Game Dev
  5. Unity'de garbage collection neden frame düşüşüne yol açar? Update içinde allocation'dan nasıl kaçınırsınız?ZorUnity & C#Game Dev
  6. C#'ta struct ile class arasındaki fark nedir? Value type ve reference type oyunda neden önemlidir?OrtaUnity & C#Game Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle