Unity'de Özel Güncelleme Hızının Uygulanması

Unity'de özel bir güncelleme hızı uygulamak için, eşyordamları veya diğer yöntemleri kullanarak kendi güncelleme döngünüzü yönetmek üzere ayrı bir komut dosyası oluşturabilirsiniz. İşte bunu nasıl başarabileceğinize dair temel bir örnek:

using UnityEngine;

public class CustomUpdateManager : MonoBehaviour
{
    public float updateInterval = 0.1f; // Customize your update interval here

    private float timeSinceLastUpdate;

    private void Start()
    {
        timeSinceLastUpdate = 0f;
        StartCoroutine(CustomUpdateLoop());
    }

    private IEnumerator CustomUpdateLoop()
    {
        while (true)
        {
            // Custom update loop
            UpdateLogic();

            // Wait for the specified interval
            yield return new WaitForSeconds(updateInterval);
        }
    }

    private void UpdateLogic()
    {
        // Your custom update logic goes here
        Debug.Log("Custom Update");

        // For example, move an object
        transform.Translate(Vector3.forward * Time.deltaTime);
    }
}
  • Yukarıdaki betiği sahnenizdeki bir GameObject'e ekleyin. Bu komut dosyası, 'UpdateLogic()''i belirli bir aralıkta ('updateInterval') çalıştıran özel bir güncelleme döngüsü oluşturur.

'updateInterval' ayarını 'UpdateLogic()''in ne sıklıkta çağrılacağını kontrol etmek için ayarlayabilirsiniz. Daha küçük aralıklar daha sık güncellemeyle sonuçlanırken, daha büyük aralıklar daha az sıklıkta güncellemeyle sonuçlanır.

Bu yaklaşım, özel mantığınızın Unity'nin yerleşik 'Update()' yönteminden ayrılmasını sağlar ve güncelleme hızı üzerinde daha hassas kontrole sahip olmanızı sağlar.

Aralığı ihtiyaçlarınıza ve projenizin performans gereksinimlerine göre ayarlamayı unutmayın. Çok sık yapılan güncellemeler performansı etkileyebilir; bu nedenle bunları dikkatli kullanın.

Optimizasyon İpucu

Her karede yeni bir örnek oluşturmayı önlemek için 'WaitForSeconds''yı döngü dışında önceden başlatmak, performansı'yı iyileştirebilir. 'WaitForSeconds''yı önceden başlatmak için komut dosyasını nasıl değiştirebileceğiniz aşağıda açıklanmıştır:

using UnityEngine;

public class CustomUpdateManager : MonoBehaviour
{
    public float updateInterval = 0.1f; // Customize your update interval here

    private float timeSinceLastUpdate;
    private WaitForSeconds waitForSeconds;

    private void Start()
    {
        timeSinceLastUpdate = 0f;
        waitForSeconds = new WaitForSeconds(updateInterval); // Pre-initialize WaitForSeconds
        StartCoroutine(CustomUpdateLoop());
    }

    private IEnumerator CustomUpdateLoop()
    {
        while (true)
        {
            // Custom update loop
            UpdateLogic();

            // Wait for the pre-initialized WaitForSeconds
            yield return waitForSeconds;
        }
    }

    private void UpdateLogic()
    {
        // Your custom update logic goes here
        Debug.Log("Custom Update");

        // For example, move an object
        transform.Translate(Vector3.forward * Time.deltaTime);
    }
}

'WaitForSeconds''i önceden başlatarak, her karede yeni bir örnek oluşturmanın getirdiği ek yükten kaçınırsınız ve özellikle özel güncelleme döngünüz sık sık çalışıyorsa performansı artırma potansiyeline sahip olursunuz. Bu optimizasyon, bu betiğin aynı anda çalışan çok sayıda örneğine sahipseniz veya oyununuz performansa duyarlıysa özellikle kullanışlıdır.

Önerilen Makaleler
Güncelleme ve Sabit Güncelleme
Güncelleme ve LateUpdate
Unity Platformuna Özel Derleme
Unity'de Koleksiyon Öğeleri ve Güçlendirmeler Oluşturma
Birlik Kodunda Kalıtım ve Polimorfizmin Uygulanması
Unity C# Komut Dosyası Diline Giriş
Güncelleme vs Sabit Güncelleme vs LateUpdate