Update وLateUpdate
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 56 من 67.
في كل إطار، تستدعي Unity الدالة Update() في كل نص برمجي، ولا تستدعي LateUpdate() في كل نص برمجي إلا بعد أن تنتهي جميعها. ليس لك أن تحدد أي كائن تُنفَّذ عليه Update() أولًا.
هذا مهم لكل ما يتبع شيئًا آخر. قد تعمل كاميرا تنسخ موضع اللاعب في Update() قبل أن تنقل دالة Update() الخاصة باللاعب موضعه، فتنسخ موضع اللاعب قبل إطار: تتأخر الكاميرا خطوة، وقد يتغير حدوث ذلك عند إضافة كائنات أو إعادة تحميل المشهد. أما في LateUpdate()، فيحدث النسخ دائمًا بعد تحرك اللاعب:
public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
void LateUpdate()
{
transform.position = player.position + offset;
}القاعدة: حرّك الأشياء في Update()، وضع الشيفرة التي تتفاعل مع المواضع النهائية للأشياء، مثل الكاميرات والتسميات والتصويب، في LateUpdate(). تُنفَّذ كلتاهما مرة واحدة في كل إطار، وتعني Time.deltaTime الشيء نفسه في كلتيهما.
التحدي
متوسطيشغّل كلٌّ من اللاعب وبطاقة اسمه النص البرمجي Mover. في Player، تكون target فارغة، لذا تحرّك الأسهم اللاعب. وفي NameTag، تكون target هي اللاعب، لذا تستقرّ البطاقة على ارتفاع offset فوقه.
اضغط على Play واستمر في الضغط على أحد الأسهم: ستتأخر البطاقة عن اللاعب. هنا تُنفَّذ Update() الخاصة بالبطاقة أولًا، وتنسخ موضع اللاعب قبل إطار واحد. أصلح ذلك بحيث تكون البطاقة فوق اللاعب تمامًا في كل إطار، وأبقِ حركة الأسهم في Update(). ثم اضغط على Check.
جرّب بنفسك
using UnityEngine;
public class Mover : MonoBehaviour
{
public Transform target;
public Vector3 offset;
public float speed = 4f;
void Update()
{
if (target != null)
{
transform.position = target.position + offset;
}
else
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
}
}
}
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات البرمجة النصية في Unity
1أول سكربت لك
مرحبًا يا Unityضع المكعبتحرّك في كل إطاراستدر كل ثانيةوجّه باستخدام المفاتيحمراجعة: قُد المكعب4المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي وفضاء العالمالسرعة القطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: طيار الطائرة المسيّرة10دورة حياة السكربت
Awake وStartUpdate وLateUpdateOnEnable وOnDisableترتيب دورة الحياةمراجعة: مسجّل دورة الحياة5التحويلات والتسلسل الهرمي
الآباء والأبناءالتحجيمالنظر إلى الأشياءالتحرك نحو نقطةمراجعة: القمر الدائر