Unitys livscykel
↑Snabböversikt
Section titled “Snabböversikt”Unity anropar vissa metoder på MonoBehaviour vid särskilda tillfällen. Att lägga kod i rätt fas gör skillnad för fysik, inmatning och initialisering.
| Metod | Vanlig uppgift | Att tänka på |
|---|---|---|
Awake |
Hämta komponenter, sätt lokalt tillstånd | Körs när skriptinstansen laddas eller aktiveras beroende på sammanhang |
OnEnable |
Prenumerera på händelser | Kan köras flera gånger |
Start |
Initiera beroenden | Körs före första Update för ett aktivt beteende |
Update |
Läs inmatning och vanlig spellogik | Körs per renderad bildruta |
FixedUpdate |
Påverka fysik | Körs med fast tidssteg |
LateUpdate |
Följ kamera eller kod efter Update | Körs efter Update |
OnDisable |
Avregistrera händelser | Viktigt för att undvika dubbla prenumerationer |
Exempel i ett spel
Section titled “Exempel i ett spel”- Hämta
RigidbodyiAwake. - Läs indata i
Updateoch spara aktuell riktning. - Applicera krafter i
FixedUpdatemed den sparade riktningen. - Låt kameran följa spelaren i
LateUpdate. - Avsluta prenumerationer i
OnDisable.
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]public sealed class PlayerMovement : MonoBehaviour{ private Rigidbody body; private Vector2 movement;
private void Awake() => body = GetComponent<Rigidbody>(); private void Update() => movement = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); private void FixedUpdate() => body.AddForce(new Vector3(movement.x, 0f, movement.y) * 8f, ForceMode.Acceleration);}Exemplet använder Unitys äldre Input Manager för tydlighet. I ett projekt med Input System använder du actions för inmatning i stället.
Varför skilja på Update och FixedUpdate?
Section titled “Varför skilja på Update och FixedUpdate?”Fysiken tar steg med fast tidsintervall, som inte måste sammanfalla med renderade bildrutor. Därför kan FixedUpdate köras noll eller flera gånger per bildruta. Läs snabba inmatningshändelser i Update och skicka värden vidare till fysiken.
Läs också Rigidbody och Kollisioner och triggers.
Testa livscykeln
Section titled “Testa livscykeln”INTERAKTIV LIVSCYKEL
Välj en metod för att se när och varför den används. Schemat är förenklat; det visar inte en strikt total ordning mellan FixedUpdate och Update.
Awake
Initiera egna fält och spara referenser som tillhör komponenten.
Varför det spelar rollAwake passar för lokal initiering, inte antaganden om ordningen mellan olika GameObjects.
