Zum Hauptinhalt springen

Wie kann ich feststellen, ob ein Objekt in Unity auf der Bühne vorhanden ist - eine detaillierte Anleitung

Ein wesentlicher Aspekt der Entwicklung von Spielen auf der Unity-Plattform ist die Arbeit mit Objekten auf der Bühne. Oft ist es notwendig zu überprüfen, ob ein bestimmtes Objekt zu einem bestimmten Zeitpunkt auf der Bühne vorhanden ist. In diesem Artikel werden wir uns verschiedene Möglichkeiten ansehen, wie eine solche Überprüfung durchgeführt werden kann.

Der erste Weg besteht darin, die Funktion zu verwenden FindObjectWithTag. Mit dieser Funktion können Sie ein Objekt in der Szene anhand seines Tags suchen. Sie müssen ein Tag an die Funktion übergeben, und es wird das erste Objekt mit diesem Tag zurückgegeben, das in der Szene gefunden wird. Wenn das Objekt nicht gefunden wird, gibt die Funktion einen Wert zurück null. Wenn Sie beispielsweise ein Objekt mit dem Tag "Player" haben, können Sie es mit dem folgenden Code überprüfen:

GameObject player = GameObject.FindWithTag("Player");if (player != null)else

Der zweite Weg ist die Verwendung der Funktion FindObjectOfType. Mit dieser Funktion können Sie ein Objekt in der Szene nach seinem Typ suchen. Sie müssen den Objekttyp an die Funktion übergeben, und es wird das erste Objekt dieses Typs zurückgegeben, das in der Szene gefunden wird. Wenn das Objekt nicht gefunden wird, gibt die Funktion auch einen Wert zurück null. Wenn Sie beispielsweise ein Objekt vom Typ "Enemy" haben, können Sie es mit dem folgenden Code überprüfen:

Enemy enemy = FindObjectOfType();if (enemy != null)else

Der dritte Weg ist die Verwendung der Funktion GameObject.Find. Mit dieser Funktion können Sie ein Objekt in der Szene anhand seines Namens suchen. Sie müssen den Objektnamen an die Funktion übergeben, und es wird ein Objekt mit diesem Namen zurückgegeben, das in der Szene gefunden wird. Wenn das Objekt nicht gefunden wird, gibt die Funktion einen Wert zurück null. Wenn Sie beispielsweise ein Objekt mit dem Namen "Key" haben, können Sie mit dem folgenden Code überprüfen, ob es vorhanden ist:

GameObject key = GameObject.Find("Key");if (key != null)else

Verwenden der GameObject-Funktion.Find

Sie können die GameObject-Funktion verwenden, um zu überprüfen, ob ein Objekt in der Unity-Szene vorhanden ist.Find. Mit dieser Funktion können Sie einen Verweis auf ein Objekt anhand seines Namens suchen und abrufen.

Die Syntax für die Verwendung der GameObject-Funktion.Find nächster:

  • GameObject.Find("Objektname");

Die GameObject-Funktion.Find gibt einen Verweis auf das gefundene Objekt zurück oder null, wenn das Objekt nicht gefunden wird.

Ein Beispiel für die Verwendung der GameObject-Funktion.Find:

Die GameObject-Funktion.Find sucht nur in der aktiven Szene nach Objekten. Wenn sich das Objekt in einer inaktiven Szene befindet, kann die Funktion es nicht finden.

Verwenden der GameObject-Funktion.Find kann nützlich sein, um zu überprüfen, ob bestimmte Objekte in der Szene vorhanden sind und abhängig vom Suchergebnis entsprechende Aktionen auszuführen.

Überprüfen, ob ein Objekt über seinen Namen vorhanden ist

Zunächst müssen Sie einen Verweis auf das Objekt mithilfe der Methode abrufen GameObject.Find. Diese Methode nimmt den Namen des Objekts an und gibt einen Verweis darauf zurück.

Um beispielsweise nach einem Objekt mit dem Namen "Enemy" zu suchen, können Sie den folgenden Code verwenden:

GameObject enemy = GameObject.Find("Enemy");if (enemy != null)else

Wenn in diesem Beispiel ein Objekt mit dem Namen "Enemy" gefunden wird, wird eine Variable gefunden enemy enthält einen Verweis auf dieses Objekt und wir können die erforderlichen Aktionen ausführen. Wenn das Objekt nicht gefunden wird, wird die Variable enemy enthält den Wert null. und wir können alternative Aktionen durchführen.

Daher ist die Verwendung der Methode GameObject.Find ermöglicht es Ihnen, anhand des Namens eines Objekts auf der Bühne zu überprüfen und entsprechend dem Ergebnis der Überprüfung geeignete Maßnahmen zu ergreifen.

Überprüfen, ob ein Objekt über sein Tag vorhanden ist

Sie können die Funktion verwenden, um zu überprüfen, ob ein Objekt über sein Tag vorhanden ist FindGameObjectsWithTag. Sie sucht nach allen Objekten in der Szene, für die das angegebene Tag angegeben ist, und gibt ein Array solcher Objekte zurück.

Die Überprüfung des Vorhandenseins eines Objekts über sein Tag erleichtert daher die Suche und Interaktion mit den gewünschten Objekten in der Unity-Szene.

Verwenden der GameObject-Funktion.FindObjectOfType

Mit dieser Funktion können Sie ein Objekt eines bestimmten Typs finden, das derzeit in der Szene vorhanden ist. Es nimmt den Typ des Objekts an, nach dem Sie suchen, als Parameter an und gibt das erste gefundene Objekt des angegebenen Typs zurück.

Angenommen, Sie haben ein Skript, das auf das Objekt "Enemy" in der Szene zugreifen soll. Sie können die GameObject-Funktion verwenden.FindObjectOfType und geben Sie den Typ "Enemy" als Parameter an.

KodeDie Beschreibung
Enemy enemy = GameObject.FindObjectOfType(); Suchen und Zurückgeben des ersten gefundenen "Enemy" -Objekts auf der Bühne.

Wenn mehrere Objekte vom Typ "Enemy" in der Szene vorhanden sind, findet die Funktion nur das erste gefundene Objekt und gibt es zurück. Wenn Sie alle Objekte dieses Typs finden möchten, sollten Sie die GameObject-Funktion verwenden.Ein FindObjectsOfType, der ein Array aller gefundenen Objekte des angegebenen Typs zurückgibt.

Verwenden der GameObject-Funktion.Mit FindObjectOfType können Sie das Vorhandensein von Objekten in der Szene flexibler und effizienter steuern und es einfacher machen, mit ihnen zu arbeiten.

Verwenden der GameObject-Funktion.FindGameObjectsWithTag

Unity stellt eine GameObject-Funktion bereit.FindGameObjectsWithTag, mit dem Sie alle Objekte in einer Szene finden können, die über ein bestimmtes Tag verfügen.

Die Verwendung dieser Funktion ist ziemlich einfach. Sie müssen sie anrufen und ihr eine Zeichenfolge mit dem Tag übergeben, nach dem Sie suchen möchten. Die Funktion gibt ein GameObject-Array zurück[] enthält alle gefundenen Objekte.

Wenn Sie beispielsweise mehrere Objekte mit dem Tag "Enemy" auf der Bühne haben, können Sie sie wie folgt finden:

GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");

Das Enemies-Array speichert jetzt alle gefundenen Objekte mit dem Tag "Enemy". Sie können dieses Array verwenden, um verschiedene Operationen an Objekten durchzuführen, z. B. das Ändern ihrer Position, der Drehung oder anderer Parameter.

Zum Beispiel können Sie jeden Feind in eine zufällige Position verschieben:

foreach(GameObject enemy in enemies)

Dies ist ein Beispiel für einige der Funktionen, die die GameObject-Funktion bietet.FindGameObjectsWithTag. Sie können diese Funktion verwenden, um zu überprüfen, ob bestimmte Objekte in der Szene vorhanden sind und ihnen verschiedene Aktionen zuzuweisen.

Überprüfen, ob ein Objekt über einen Verweis darauf vorhanden ist

Um zu überprüfen, ob ein Objekt in der Unity-Szene vorhanden ist, können Sie einen Verweis auf dieses Objekt verwenden und es auf einen Null-Wert überprüfen. Wenn die Referenz nicht null ist, ist das Objekt in der Szene vorhanden.

Um einen Verweis auf ein Objekt zu erhalten, verwenden Sie die Funktion FindObjectOfType, mit der Sie ein Objekt eines bestimmten Typs in einer Szene finden können. Wenn wir beispielsweise nach einem Objekt vom Typ "Player" suchen müssen, können Sie die Funktion FindObjectOfType() aufrufen, die einen Verweis auf ein Objekt vom Typ "Player" oder null zurückgibt, wenn es kein solches Objekt in der Szene gibt.

Beispiel für die Überprüfung, ob ein Objekt vom Typ "Player" vorhanden ist:

Player player = FindObjectOfType(); if (player != null) < Debug.Log("Объект Player существует на сцене"); >else

Wenn in diesem Beispiel ein Objekt vom Typ "Player" auf einer Bühne vorhanden ist, wird die Meldung "Player-Objekt existiert auf der Bühne" angezeigt. Wenn kein Objekt auf der Bühne vorhanden ist, wird die Meldung "Player-Objekt fehlt auf der Bühne" angezeigt.

Wenn Sie also einen Objektverweis verwenden und ihn auf null überprüfen, können Sie überprüfen, ob das Objekt in der Unity-Szene vorhanden ist.

Verwenden der GameObject-Funktion.FindObjectOfType

GameObject.Mit FindObjectOfType können Sie ein Objekt eines bestimmten Typs in einer Szene suchen. Wenn wir beispielsweise ein Objekt mit einer PlayerController-Komponente finden möchten, können wir den folgenden Code verwenden:

PlayerController player = GameObject.FindObjectOfType();if(player != null)else

Die GameObject-Funktion.FindObjectOfType gibt ein Objekt des angegebenen Typs oder null zurück, wenn das Objekt nicht gefunden wird. Daher können wir überprüfen, ob ein Objekt gefunden wurde, indem wir es mit null vergleichen.

Es sollte jedoch daran erinnert werden, dass die Verwendung der GameObject-Funktion verwendet wird.Der FindObjectOfType ist möglicherweise etwas langsamer als die direkteren Möglichkeiten, um zu überprüfen, ob ein Objekt vorhanden ist. Wenn Sie also alternative Möglichkeiten zur Validierung haben, sollten Sie sie in Betracht ziehen.

Es ist auch erwähnenswert, dass die GameObject-Funktion.FindObjectOfType findet nur ein Objekt des angegebenen Typs. Wenn mehrere Objekte mit der PlayerController-Komponente in der Szene vorhanden sind, gibt die Funktion nur das erste gefundene Objekt zurück. Wenn Sie alle Objekte des angegebenen Typs benötigen, können Sie die GameObject-Funktion verwenden.FindObjectsOfType:

PlayerController[] players = GameObject.FindObjectsOfType();foreach(PlayerController player in players)

Daher die Verwendung von GameObject-Funktionen.FindObjectOfType und GameObject.FindObjectsOfType kann den Prozess der Überprüfung auf das Vorhandensein eines Objekts in der Szene erheblich vereinfachen und die Interaktion mit dem Objekt vereinfachen.