التحديث مقابل التحديث الثابت مقابل التحديث المتأخر

جزء بارز من Unity API هو وظائف التحديث، وهي الوظائف التي تعمل بشكل مستمر.

Unity يحتوي على ثلاثة أنواع من وظائف التحديث: 'Update'، FixedUpdate، و LateUpdate.

'Update' ضد FixedUpdate

الفرق بين الدالتين 'Update' و FixedUpdate يكمن في عدد مرات تشغيلهما.

تعمل الدالة 'Update' مرة واحدة لكل إطار بينما تعمل FixedUpdate بمعدل ثابت، ويتم التحكم فيها بواسطة قيمة "Fixed Timestamp" في 'Project Settings' -> 'Time'.

'Update' الوظائف مناسبة لبرمجة منطق اللعبة، وإدخال اللاعب، وأي حسابات غير فيزيائية.

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //Space button has been pressed
        }    
    }

من ناحية أخرى، تعتبر وظائف FixedUpdate مناسبة للحسابات القائمة على الفيزياء، مثل Raycasting، أو تطبيق القوى على الأجسام الصلبة، أو أي حسابات تحتاج إلى أن تكون مستقلة عن معدل الإطارات.

    void FixedUpdate()
    {
        //Use Physics Raycast to detect if there any object in front
        RaycastHit hit;
        if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
        {
            Debug.Log("Object '" + hit.transform.name + "' is currently in front of this object.");
        }
    }

التحديث مقابل LateUpdate

'Update' و LateUpdate متطابقان من حيث تردد التشغيل (كلاهما يعمل مرة واحدة لكل إطار)، ولكن LateUpdate يعمل بعد جميع وظائف 'Update'.

وأخيرًا، تُستخدم وظيفة LateUpdate بشكل شائع لتعديل عظام النماذج المتحركة (على سبيل المثال، جعل نموذج المشغل ينظر لأعلى ولأسفل) أو لتنفيذ متابعة سلسة للكاميرا.

    void LateUpdate()
    {
        //Make camera tagged 'MainCamera' look at this object transform
        Camera mainCamera = Camera.main;
        mainCamera.transform.LookAt(transform);
    }

يبعد

كل وظيفة تحديث لها حالة الاستخدام الخاصة بها.

استخدمها معًا لتنفيذ مجموعة واسعة من السيناريوهات.

المقالات المقترحة
دليل للسلوك الأحادي في الوحدة
إنشاء عبارات شرطية (إذا كانت غير ذلك) في رمز الوحدة
الاستيقاظ مقابل البدء
التحديث مقابل التحديث المتأخر
استخدام وحدة تحكم Runtime Animator في Unity
قائمة الوحدة للكلمات الرئيسية المفيدة في C#
تنفيذ إدخال لوحة المفاتيح والماوس في الوحدة