Update و LateUpdate
جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 71 من 85.
في كل إطار، تستدعي 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 الشيء نفسه في كلتيهما.
التحدي
متوسطاجعل بطاقة الاسم فوق اللاعب مباشرةً في كل إطار.
- أضف
void LateUpdate()، التي تعمل بعدUpdate()لكل سكربت. - انقل جزء
if (target != null)إليه، وأبقِ حركة الأسهم فقط فيUpdate()، ضمنif (target == null).
اضغط على «العب» واستمر في الضغط على أحد الأسهم: ستبقى البطاقة فوق اللاعب مباشرةً. ثم اضغط على «تحقق».
جرّب بنفسك
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أساسيات C# في Unity
مرحبًا يا Unityالمتغيراتالأعداد العشرية تحتاج إلى fالنص في وحدة التحكممتغيرات تتذكرإذا وإلامقارنة الأعدادمراجعة: جامع العملات7الحلقات والدوال
التكرار باستخدام forحلقات داخل حلقاتكتابة دالةدوال تُعيد إجابةالمصفوفاتمراجعة: السُّلّم5المتجهات
جمع المتجهاتالاتجاهاتالفضاء المحلي والعالميالسرعة القُطريةالمسافة بين الأشياءVector3 بنية Structمراجعة: قيادة الطائرة المسيّرة8كائنات اللعبة والمكوّنات
المراجع في Inspectorالحصول على مكوّنالمكوّنات المفقودةإضافة مكوّنRequireComponentالإظهار والإخفاءمراجعة: مفتاح الإضاءة6التحويلات والتسلسل الهرمي
الآباء والأبناءارفع العلمالتحجيمانظر إلى الأشياءتحرّك نحو نقطةمراجعة: القمر في مداره12دورة حياة السكربت
Awake و StartUpdate و LateUpdateOnEnable و OnDisableترتيب دورة الحياةمراجعة: مسجّل دورة الحياةتدرّب بنفسك: Playground لـ Unity