Atualização vs FixedUpdate vs LateUpdate
Uma parte importante da Unity API são as funções de atualização, que são as funções executadas continuamente.
Unity tem três tipos de funções de atualização: 'Update', FixedUpdate e LateUpdate.
'Update' contra FixedUpdate
A diferença entre as funções 'Update' e FixedUpdate está na frequência com que elas são executadas.
A função 'Update' é executada uma vez por quadro enquanto FixedUpdate é executada a uma taxa constante, controlada pelo valor "Fixed Timestamp" em 'Project Settings' -> 'Time'.
'Update' funções são adequadas para programar a lógica do jogo, a entrada do jogador e basicamente quaisquer cálculos não físicos.
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//Space button has been pressed
}
}
Por outro lado, as funções FixedUpdate são adequadas para cálculos baseados em física, como Raycasting, aplicação de forças a corpos rígidos ou quaisquer cálculos que precisem ser independentes da taxa de quadros.
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.");
}
}
Atualizar versus LateUpdate
'Update' e LateUpdate são idênticos em termos de frequência de execução (ambos executados uma vez por quadro), mas LateUpdate é executado após todas as funções 'Update'.
Por último, a função LateUpdate é comumente usada para modificar ossos de modelos animados (por exemplo, fazer o modelo do jogador olhar para cima e para baixo) ou para implementar um acompanhamento suave da câmera.
void LateUpdate()
{
//Make camera tagged 'MainCamera' look at this object transform
Camera mainCamera = Camera.main;
mainCamera.transform.LookAt(transform);
}
Remover
Cada função de atualização tem seu próprio caso de uso.
Use-os em combinação para implementar uma ampla variedade de cenários.