GameObject.FindGameObjectsWithTag
Declaration
public static GameObject[] FindGameObjectsWithTag(string tag);Параметры
| Параметр | Описание |
|---|---|
| метка | Имя тега для поиска GameObjects. |
Описание
Получает массив всех активных GameObjects, помеченных указанной меткой. Возвращает пустое массиво, если ни один GameObjects не имеет метки.
Метки должны быть объявлены в менеджере тегов, прежде чем их можно будет использовать. UnityException будет брошена, если тег не существует или если пуста строка или null поставляется как tag параметр.
// Instantiates respawnPrefab at the location // of all GameObjects tagged "Respawn".
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public GameObject respawnPrefab; public GameObject[] respawns; void Start() { if (respawns == null) respawns = GameObject.FindGameObjectsWithTag("Respawn");
foreach (GameObject respawn in respawns) { Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation); } } }
Еще один пример:
// Find the name of the closest enemy
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public GameObject FindClosestEnemy() { GameObject[] gos; gos = GameObject.FindGameObjectsWithTag("Enemy"); GameObject closest = null; float distance = Mathf.Infinity; Vector3 position = transform.position; foreach (GameObject go in gos) { Vector3 diff = go.transform.position - position; float curDistance = diff.sqrMagnitude; if (curDistance < distance) { closest = go; distance = curDistance; } } return closest; } }
Другой пример, проверка на пустые массивы:
using UnityEngine;
// Search for GameObjects with a tag that is not used
public class Example : MonoBehaviour { void Start() { GameObject[] gameObjects; gameObjects = GameObject.FindGameObjectsWithTag("Enemy");
if (gameObjects.Length == 0) { Debug.Log("No GameObjects are tagged with 'Enemy'"); } } }