Opdatering vs FixedUpdate vs LateUpdate
En fremtrædende del af Unity API er opdateringsfunktionerne, som er de funktioner, der kører kontinuerligt.
Unity har tre typer opdateringsfunktioner: 'Update', FixedUpdate og LateUpdate.
'Update' vs FixedUpdate
Forskellen mellem 'Update' og FixedUpdate funktioner er, hvor ofte de kører.
'Update'-funktionen kører én gang pr. billede, mens FixedUpdate kører med en konstant hastighed, styret af "Fixed Timestamp"-værdien i 'Project Settings' -> 'Time'.
'Update' funktioner er velegnede til programmering af spillogikken, spillerinput og stort set alle ikke-fysiske beregninger.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
På den anden side er FixedUpdate-funktioner velegnede til fysikbaserede beregninger, såsom Raycasting, påføring af kræfter på Rigidbodies eller enhver beregning, der skal være framerate-uafhængig.
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.");
}
}
Opdatering vs LateUpdate
'Update' og LateUpdate er identiske med hensyn til kørselsfrekvens (begge køres én gang pr. frame), men LateUpdate kører efter alle 'Update' funktioner.
Endelig er LateUpdate-funktionen almindeligvis brugt til at ændre animerede modelknogler (f.eks. få afspillermodellen til at se op og ned) eller til at implementere en jævn kamerafølge.
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
Tag væk
Hver opdateringsfunktion har sin egen use case.
Brug dem i kombination til at implementere en lang række scenarier.