Unity'de Güncelleme Nasıl Kullanılır?

Unity'teki Güncelleme işlevi, kare başına bir kez çağrılan ve genellikle oyun nesnelerinin durumunu güncellemek ve diğer oyun mantığını gerçekleştirmek için kullanılan yerleşik bir işlevdir. Aşağıda Unity kodundaki Güncelleme işlevinin doğru şekilde nasıl kullanılacağına ilişkin birkaç ipucu bulunmaktadır.

1. 'Time.deltaTime'

Güncelleme işlevleri kare başına bir kez çağrıldığından, güncellemelerin kare hızından bağımsız olmasını sağlamak için 'Time.deltaTime' kullanılması önemlidir. Bu, güncellemelerin kare hızından bağımsız olarak aynı hızda yürütüleceği ve oyunun farklı donanımlarda tutarlı şekilde davranacağı anlamına gelir.

Örneğin, bir nesneyi sabit bir hızda hareket ettirmek için, nesnenin kare hızından bağımsız olarak aynı hızda hareket etmesini sağlamak amacıyla hareket vektörünün 'Time.deltaTime' ile çarpılması gerekir:

void Update() {
    transform.position += Vector3.forward * speed * Time.deltaTime;
}

2. Pahalı Hesaplamalardan Kaçının

Daha önce de belirtildiği gibi Güncelleme kare başına bir kez çağrıldığından, performansı etkileyebilecek pahalı hesaplamalar yapmaktan kaçınmak önemlidir. Örneğin, yürütülmesi uzun zaman alan karmaşık bir algoritma varsa, bunu ayrı bir iş parçacığına taşımak veya birden fazla karede yürütülebilecek daha küçük parçalara bölmek daha iyi olabilir.

3. Fizik için FixedUpdate kullanın

Oyunda fizikle çalışırken Güncelleme yerine FixedUpdate fonksiyonunun kullanılması tavsiye edilir. FixedUpdate, fizik zaman adımına göre belirlenen sabit bir hızla çağrılır ve çarpışma tespiti ve rijit cisim hareketi gibi fizik hesaplamalarını gerçekleştirmek için tasarlanmıştır. Fizik hesaplamaları için FixedUpdate kullanılması, oyun fiziğinin farklı kare hızlarında tutarlı ve doğru şekilde davranmasını sağlamaya yardımcı olabilir.

4. Coroutine'leri Kullanmayı Düşünün

Kare hızına bağlı olmayan bir güncelleme gerçekleştirmek için Güncelleme yerine Coroutine kullanmak daha iyi olabilir. Eşyordamlar, bir işlevin yürütülmesini belirli bir süre boyunca duraklatma işlevini sağlar ve daha sonra düşmanların ortaya çıkması veya bir animasyonun geciktirilmesi gibi zamana dayalı güncellemeler gerçekleştirmesine olanak tanır.

IEnumerator SpawnEnemy() {
    while (true) {
        Instantiate(enemyPrefab, spawnPoint.position, Quaternion.identity);
        yield return new WaitForSeconds(spawnDelay);
    }
}

Bir Coroutine başlatmak için StartCoutine'i bir kez çağırmanız yeterlidir:

StartCoroutine(SpawnEnemy());

Bir Coroutine'i durdurmak için, bir Coroutine, IEnumerator veya yöntem adına referans alan StopCoroutine yöntemini kullanın (StartCoroutine'den bir referansı saklamak ve bunu durdurmak için kullanmak tercih edilen bir yaklaşımdır çünkü Coroutine'in tam olarak hangi örneğini durduracağını bilir) ):

Coroutine a = StartCoroutine(SpawnEnemy());

StopCoroutine(a);

Çözüm

Bu en iyi uygulamaların izlenmesi Güncelleme işlevlerinin Unity komut dosyalarında düzgün şekilde kullanılmasını sağlayacaktır.

Önerilen Makaleler
Birlik için Billboard Jeneratörü
Unity, Profiler'ı Kullanarak Oyununuzu Optimize Edin
Unity'de Mobil Oyunun Performansını Artırma
En İyi Performans için Unity Ses Klibi İçe Aktarma Ayarları
Unity için Optimizasyon İpuçları
Unity'de Özel Güncelleme Hızının Uygulanması
Isıyla Daralan Boru Nasıl Kullanılır?