Update e LateUpdate
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 71 de 85.
A cada quadro, o Unity chama Update() em cada script e, somente quando todos terminam, chama LateUpdate() em cada script. Você não decide qual objeto executa Update() primeiro.
Isso importa para tudo que acompanha outra coisa. Uma câmera que copia a posição do jogador em Update() pode ser executada antes que o próprio Update() do jogador o mova e, então, copia a posição em que o jogador estava um quadro atrás: a câmera fica um passo para trás, e isso pode mudar quando objetos são adicionados ou a cena é recarregada. Em LateUpdate(), a cópia sempre acontece depois que o jogador se moveu:
public Transform player;
public Vector3 offset = new Vector3(0, 3, -6);
void LateUpdate()
{
transform.position = player.position + offset;
}A regra: mova as coisas em Update() e coloque em LateUpdate() o código que reage à posição final das coisas, como câmeras, rótulos e mira. Ambos são executados uma vez por quadro, e Time.deltaTime significa a mesma coisa em ambos.
Desafio
MédioFaça a etiqueta com o nome ficar exatamente acima do jogador em cada quadro.
- Adicione
void LateUpdate(), que é executado depois doUpdate()de cada script. - Mova a parte
if (target != null)para dentro dele e mantenha apenas o movimento pelas setas emUpdate(), dentro deif (target == null).
Pressione “Jogar” e mantenha uma seta pressionada: a etiqueta fica bem acima do jogador. Depois, “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Mover : MonoBehaviour
{
public Transform target;
public Vector3 offset;
public float speed = 4f;
void Update()
{
if (target != null)
{
transform.position = target.position + offset;
}
else
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(speed * Time.deltaTime, 0, 0);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position -= new Vector3(speed * Time.deltaTime, 0, 0);
}
}
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela Cadente12O ciclo de vida dos scripts
Awake e StartUpdate e LateUpdateOnEnable e OnDisableA ordem do ciclo de vidaRecapitulação: registrador do ciclo de vidaPratique por conta própria: Playground de Unity