logo

Prefabs und Instanziierung verstehen

Das Instanziieren und Zerstören von Charakteren oder Objekten kommt in jedem Spiel häufig vor. Instanziieren bedeutet, das Objekt ins Leben zu rufen. Objekte erscheinen oder spawnen oder werden in einem Spiel generiert, Feinde sterben, GUI-Elemente verschwinden und Szenen werden ständig im Spiel geladen.

Prefabs sind sehr nützlich, wenn Sie zur Laufzeit komplizierte GameObjects oder eine Sammlung von GameObjects instanziieren möchten. Im Vergleich zum Erstellen von GameObjects von Grund auf mithilfe von Code ist die Instanziierung von Prefabs mithilfe von Code besser und bietet viele Vorteile.

Datenstrukturen in Java

Lassen Sie uns verstehen, was Fertighäuser sind. da Prefabs als wichtig erachtet werden, um zu verstehen, wie die Instanziierung in Unity funktioniert.

Fertighäuser sind wie Blaupausen eines GameObjects. Wir können also sagen, dass Prefabs eine Kopie eines GameObjects sind, das dupliziert und in eine Szene eingefügt werden kann, auch wenn es zum Zeitpunkt der Erstellung der Szene noch nicht vorhanden war; Mit anderen Worten: Prefabs können verwendet werden, um GameObjects dynamisch zu generieren.

Lassen Sie uns ein Fertighaus erstellen. Dazu müssen Sie das gewünschte GameObject aus Ihrer Szenenhierarchie in die Projekt-Assets ziehen.

Prefabs und Instanziierung verstehen

Um nun ein GameObject zu instanziieren, rufen wir in unserem Skript die Methode Instantiate() auf. Diese Methode ist in MonoBehaviour verfügbar und nimmt ein GameObject als Parameter auf, sodass sie weiß, welches GameObject erstellt oder dupliziert werden soll. Es verfügt außerdem über verschiedene Überschreibungen zum Ändern der Transformation des neu instanziierten Objekts sowie zur übergeordneten Zuordnung.

Erstellen Sie nun ein neues Skript namens Instantiator.cs und kopieren Sie den folgenden Code hinein.

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Instantiator : MonoBehaviour { public GameObject Diamond; // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Diamond); } } } 

Im obigen Programm haben wir die GetKeyDown-Methode der Input-Klasse verwendet, um zu überprüfen, ob der Player während des letzten Frames eine bestimmte Taste gedrückt hat. Die GetKeyDown()-Methode gibt true zurück, wenn die durch die KeyCode-Enumeration (die zum Auflisten aller möglichen Tasten auf einer Standardtastatur verwendet wird) angegebene Taste in diesem Frame gedrückt wird.

Speichern Sie das Skript. Und jetzt erstellen Sie ein leeres GameObject, indem Sie auf der Registerkarte „Hierarchie“ mit der rechten Maustaste auf die Szene klicken.

Java, wie man überschreibt
Prefabs und Instanziierung verstehen

Hängen Sie diese Skriptdatei (Instantiator.cs) über die Registerkarte „Inspektor“ an die neu erstellte GameObject-Komponente an.

Ziehen Sie nun in der Diamond-Variable das von uns erstellte Fertighaus.

Prefabs und Instanziierung verstehen

Wenn Sie das Spiel jetzt ausführen, wird durch Drücken der Leertaste ein neues Diamond-Objekt erstellt, das mit dem identisch ist, das wir zum Erstellen des Fertighauses verwendet haben. Sie können sehen, dass jede Raute in der Objekthierarchie erstellt wird. Der Grund dafür, dass Sie sie im Spiel nicht sehen können, ist, dass sie derzeit alle genau übereinander erstellt werden. Sie können es jedoch auf der Registerkarte „Hierarchie“ überprüfen. Jedes Mal, wenn Sie die Leertaste drücken, wird es auf der Registerkarte als Raute (Klon) angezeigt.

Prefabs und Instanziierung verstehen