עדכון לעומת FixedUpdate לעומת LateUpdate
חלק בולט של 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, הפעלת כוחות על Rigidbodies, או כל חישוב שצריכים להיות בלתי תלויים ב-framerate.
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);
}
להסיר
לכל פונקציית עדכון יש מקרה שימוש משלה.
השתמש בהם בשילוב כדי ליישם מגוון רחב של תרחישים.