Uppdatering vs FixedUpdate vs LateUpdate
En framträdande del av Unity API är uppdateringsfunktionerna, som är de funktioner som körs kontinuerligt.
Unity har tre typer av uppdateringsfunktioner: 'Update', FixedUpdate och LateUpdate.
'Update' mot FixedUpdate
Skillnaden mellan 'Update' och FixedUpdate funktioner är hur ofta de körs.
Funktionen 'Update' körs en gång per bildruta medan FixedUpdate körs med en konstant hastighet, kontrollerad av värdet "Fixed Timestamp" i 'Project Settings' -> 'Time'.
'Update' funktioner är lämpliga för programmering av spellogik, spelarinmatning och i princip alla icke-fysiska beräkningar.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
Å andra sidan är FixedUpdate-funktioner lämpliga för fysikbaserade beräkningar, såsom Raycasting, applicering av krafter på Rigidbodies, eller andra beräkningar som behöver vara oberoende av ramhastighet.
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.");
}
}
Uppdatering vs LateUpdate
'Update' och LateUpdate är identiska när det gäller körningsfrekvens (båda körs en gång per bildruta), men LateUpdate körs efter alla 'Update' funktioner.
Slutligen, funktionen LateUpdate används vanligtvis för att modifiera animerade modellben (t.ex. att få spelarmodellen att titta upp och ner) eller för att implementera en smidig kameraföljning.
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
Hämtmat
Varje uppdateringsfunktion har sitt eget användningsfall.
Använd dem i kombination för att implementera en mängd olika scenarier.