Update vs. FixedUpdate vs. LateUpdate
Ein wichtiger Teil der Unity API sind die Update-Funktionen, also die Funktionen, die kontinuierlich ausgeführt werden.
Unity verfügt über drei Arten von Aktualisierungsfunktionen: 'Update', FixedUpdate und LateUpdate.
'Update' vs FixedUpdate
Der Unterschied zwischen 'Update'- und FixedUpdate-Funktionen besteht darin, wie oft sie ausgeführt werden.
Die 'Update'-Funktion wird einmal pro Frame ausgeführt, während FixedUpdate mit einer konstanten Rate ausgeführt wird, gesteuert durch den "Fixed Timestamp"-Wert in 'Project Settings' -> 'Time'.
'Update' Funktionen eignen sich zum Programmieren der Spiellogik, Spielereingaben und im Grunde für alle nichtphysikalischen Berechnungen.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
Andererseits eignen sich FixedUpdate-Funktionen für physikbasierte Berechnungen wie Raycasting, das Anwenden von Kräften auf starre Körper oder alle Berechnungen, die unabhängig von der Framerate sein müssen.
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.");
}
}
Update vs LateUpdate
'Update' und LateUpdate sind hinsichtlich der Lauffrequenz identisch (beide laufen einmal pro Frame), aber LateUpdate läuft nach allen 'Update'-Funktionen.
Schließlich wird die Funktion LateUpdate häufig verwendet, um animierte Modellknochen zu ändern (z. B. um das Spielermodell nach oben und unten schauen zu lassen) oder um eine reibungslose Kameraverfolgung zu implementieren.
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
Wegbringen
Jede Update-Funktion hat ihren eigenen Anwendungsfall.
Nutzen Sie sie in Kombination, um unterschiedlichste Szenarien umzusetzen.