Güncelleme ve Sabit Güncelleme

Unity'de, hem Güncelleme hem de FixedUpdate işlevleri bir sahnedeki nesnelerin davranışlarını güncellemek için kullanılır ve benzer amaçlara hizmet etseler de ikisi arasında önemli farklar vardır.

'Update'

'Update' işlevi kare başına bir kez çağrılır ve input işlemlerini yapmak, positions nesnesini güncellemek ve genel amaçlı görevlerin çoğunu gerçekleştirmek için idealdir. Kare hızına bağlı değildir, yani performansa bağlı olarak yürütme süresinde değişiklik gösterebilir.

void Update()
{
    // Input handling
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    
    // Movement
    Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
    transform.Translate(movement * speed * Time.deltaTime);
    
    // General-purpose tasks
    // ...
}

Yukarıdaki örnekte yatay ve dikey eksenlerden girdi alıyoruz ve bunu nesnenin hareketini kontrol etmek için kullanıyoruz. 'Translate' yöntemi, nesneyi belirtilen yönde sabit bir hızla hareket ettirmek için kullanılır. Genel amaçlı görevler aynı zamanda 'Update' işlevi içinde de gerçekleştirilebilir.

'FixedUpdate'

'FixedUpdate' işlevi sabit zaman aralıklarında çağrılır, bu da onu fizikle ilgili hesaplamalar için uygun hale getirir. Kare hızından bağımsızdır ve farklı cihazlar ve kare hızları arasında tutarlı davranış sağlar.

void FixedUpdate()
{
    // Physics calculations
    rb.AddForce(transform.forward * forceMagnitude);
    
    // Other physics-related tasks
    // ...
}

Yukarıdaki örnekte, bir Rijit cisim bileşenine nesnenin ileri yönünde sabit bir kuvvet uyguluyoruz. 'FixedUpdate' kullanımı, fizik hesaplamalarının kare hızından bağımsız olarak sabit bir hızda gerçekleşmesini sağlar. Bu, istikrarlı fizik simülasyonunu sürdürmek için önemlidir.

'Update' vs 'FixedUpdate'

'Update' ve 'FixedUpdate' işlevleri arasındaki temel farklar*:

  • 'Update' FixedUpdate sabit zaman aralıklarında çağrılırken, kare başına bir kez çağrılır.
  • 'Update' kare hızına bağlıdır, FixedUpdate ise kare hızından bağımsızdır.
  • 'Update' giriş işleme, nesne hareketi ve fizikle ilgili olmayan işlemler de dahil olmak üzere genel amaçlı görevlerin çoğu için uygundur.
  • FixedUpdate kuvvetlerin uygulanması, Sert cisim özelliklerinin ayarlanması ve diğer fizik tabanlı işlemlerin gerçekleştirilmesi gibi fizikle ilgili hesaplamalar için özel olarak tasarlanmıştır.

Çözüm

'Update' ve 'FixedUpdate''nin aynı komut dosyasında bir arada bulunabileceğini, fizikle ilgili kodu diğer genel amaçlı kodlardan ayırmaya olanak tanıdığını unutmamak önemlidir. Farklılıkları anlamak ve her bağlamda uygun işlevi kullanmak, Unity projelerinde sorunsuz ve tutarlı davranışın sağlanmasına yardımcı olur.