यूनिटी में कस्टम अपडेट दर लागू करना

Unity में एक कस्टम अपडेट दर लागू करने के लिए, आप कोरआउटिन या अन्य तरीकों का उपयोग करके अपने स्वयं के अपडेट लूप को प्रबंधित करने के लिए एक अलग स्क्रिप्ट बना सकते हैं। आप इसे कैसे प्राप्त कर सकते हैं इसका एक बुनियादी उदाहरण यहां दिया गया है:

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);
    }
}

'updateInterval' को कितनी बार कॉल किया जाए इसे नियंत्रित करने के लिए आप 'updateInterval' को समायोजित कर सकते हैं। छोटे अंतराल के परिणामस्वरूप अधिक बार-बार अपडेट होंगे, जबकि बड़े अंतराल के परिणामस्वरूप कम बार-बार अपडेट होंगे।

यह दृष्टिकोण सुनिश्चित करता है कि आपका कस्टम तर्क यूनिटी की अंतर्निहित 'Update()' विधि से अलग हो गया है और आपको अद्यतन दर पर बेहतर नियंत्रण रखने की अनुमति देता है।

अपनी आवश्यकताओं और अपने प्रोजेक्ट की प्रदर्शन आवश्यकताओं के अनुसार अंतराल को समायोजित करना याद रखें। बहुत बार-बार अपडेट करने से प्रदर्शन पर असर पड़ सकता है, इसलिए उनका उपयोग सोच-समझकर करें।

अनुकूलन युक्ति

प्रत्येक फ्रेम में एक नया उदाहरण बनाने से बचने के लिए लूप के बाहर 'WaitForSeconds' को पूर्व-प्रारंभ करने से प्रदर्शन में सुधार हो सकता है। यहां बताया गया है कि आप 'WaitForSeconds' को प्री-इनिशियलाइज़ करने के लिए स्क्रिप्ट को कैसे संशोधित कर सकते हैं:

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' को प्री-इनिशियलाइज़ करके, आप हर फ्रेम में एक नया इंस्टेंस बनाने के ओवरहेड से बचते हैं, संभावित रूप से प्रदर्शन में सुधार करते हैं, खासकर यदि आपका कस्टम अपडेट लूप बार-बार चलता है। यह अनुकूलन विशेष रूप से उपयोगी है यदि आपके पास इस स्क्रिप्ट के कई उदाहरण एक साथ चल रहे हैं या यदि आपका गेम प्रदर्शन-संवेदनशील है।