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

في Unity، يتم استخدام كل من وظيفتي Update و FixedUpdate لتحديث behavior للكائنات في المشهد، وعلى الرغم من أنها تخدم أغراضًا مماثلة، إلا أن هناك اختلافات رئيسية بين الاثنين.

'Update'

يتم استدعاء الدالة 'Update' مرة واحدة لكل إطار وهي مثالية للتعامل مع input وتحديث الكائن positions وتنفيذ معظم المهام ذات الأغراض العامة. وهو لا يعتمد على معدل الإطارات، مما يعني أنه يمكن أن يختلف في وقت التنفيذ اعتمادًا على الأداء.

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
    // ...
}

في المثال أعلاه، نقوم باسترداد المدخلات من المحورين الأفقي والرأسي ونستخدمها للتحكم في حركة الكائن. يتم استخدام الطريقة 'Translate' لتحريك الكائن في الاتجاه المحدد بسرعة ثابتة. يمكن أيضًا تنفيذ المهام ذات الأغراض العامة ضمن الوظيفة 'Update'.

'FixedUpdate'

يتم استدعاء الدالة 'FixedUpdate' على فترات زمنية محددة، مما يجعلها مناسبة للتعامل مع الحسابات المتعلقة بالفيزياء. وهو مستقل عن معدل الإطارات، مما يضمن سلوكًا متسقًا عبر الأجهزة ومعدلات الإطارات المختلفة.

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

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

'Update' مقابل "FixedUpdate"

الاختلافات الرئيسية بين الدالتين 'Update' و 'FixedUpdate':

  • 'Update' يتم استدعاؤه مرة واحدة لكل إطار، بينما يتم استدعاء FixedUpdate على فترات زمنية محددة.
  • 'Update' يعتمد على معدل الإطارات، بينما FixedUpdate مستقل عن معدل الإطارات.
  • 'Update' مناسب لمعظم المهام ذات الأغراض العامة، بما في ذلك التعامل مع المدخلات، وحركة الكائنات، والعمليات غير المتعلقة بالفيزياء.
  • FixedUpdate تم تصميمه خصيصًا للحسابات المتعلقة بالفيزياء، مثل تطبيق القوى، وضبط خصائص الجسم الصلب، وتنفيذ العمليات الأخرى القائمة على الفيزياء.

خاتمة

من المهم ملاحظة أن 'Update' و 'FixedUpdate' يمكن أن يتواجدا معًا في نفس البرنامج النصي، مما يسمح بفصل التعليمات البرمجية المتعلقة بالفيزياء عن التعليمات البرمجية ذات الأغراض العامة الأخرى. يساعد فهم الاختلافات واستخدام الوظيفة المناسبة في كل سياق على ضمان السلوك السلس والمتسق في مشاريع Unity.

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