Awake und Start
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 70 von 85.
Unity ruft Awake() auf, sobald ein Objekt geladen wird, und zwar vor seinem Start(). Nützlich ist die Regel für alle Objekte: Wenn eine Szene startet, wird das Awake() jedes Objekts ausgeführt, bevor das Start() eines beliebigen Objekts ausgeführt wird. Welches Objekt innerhalb jeder Runde zuerst dran ist, entscheidet Unity, und darauf kannst du dich nicht verlassen.
Dieses Player-Skript ist zwei Spielern zugewiesen, P1 (startLives 3) und P2 (startLives 5), und jeder hat den anderen als rival:
public int startLives = 3;
public GameObject rival;
int lives;
void Awake()
{
lives = startLives; // dieses Objekt einrichten
}
void Start()
{
int theirs = rival.GetComponent<Player>().Lives(); // das andere Objekt abfragen
Debug.Log(name + " sees a rival with " + theirs + " lives");
}
public int Lives()
{
return lives;
}In der ersten Version wurde lives in Start() festgelegt. Der Spieler, der zuerst startete, fragte dann seinen Rivalen, bevor dieser seine Leben festgelegt hatte, und gab 0 aus. Mit der Initialisierung in Awake() haben beide Spieler ihre Leben festgelegt, bevor eines der Start() danach fragt; daher gibt P1 5 und P2 3 aus. Daraus ergibt sich folgende Gewohnheit: Initialisiere die eigenen Felder eines Objekts in Awake() und kommuniziere mit anderen Objekten in Start().
Aufgabe
MittelRepariere die Bienenstöcke, damit keiner eine Liste zählt, die noch nicht erstellt wurde.
- Füge
void Awake()zuHivehinzu. - Verschiebe die Zeile
bees = new List<GameObject>();und diefor-Schleife ausStart()nachAwake(). - Lass die beiden Zählzeilen in
Start(): JedesAwake()wird ausgeführt, bevor einStart()ausgeführt wird.
Drücke auf „Spielen“: Jeder Bienenstock protokolliert die Bienen seines Rivalen, HiveA zählt 5 rivalisierende Bienen, und es tritt kein Fehler auf. Drücke dann auf „Prüfen“.
Probier es selbst
using System.Collections.Generic;
using UnityEngine;
public class Hive : MonoBehaviour
{
public GameObject beePrefab;
public GameObject rival;
public int beeCount = 3;
List<GameObject> bees;
void Start()
{
bees = new List<GameObject>();
for (int i = 0; i < beeCount; i++)
{
Vector3 spot = transform.position + new Vector3(i * 0.6f - 1.2f, 1.5f, 0);
bees.Add(Instantiate(beePrefab, spot, Quaternion.identity));
}
int theirs = rival.GetComponent<Hive>().BeeCount();
Debug.Log(name + " counts " + theirs + " rival bees");
}
public int BeeCount()
{
return bees.Count;
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground