Объявление
public static GameObject[] FindGameObjectsWithTag(string tag);Параметры
tag | Имя тега для поиска в GameObjects . |
Описание
Возвращает массив активных объектов GameObject, помеченных tag
. Возвращает пустой массив, если GameObject не найден.
Теги должны быть объявлены в диспетчере тегов перед их использованием. UnityException
будет сгенерировано, если тег не существует или в качестве тега будет передана пустая строка или null
.
// Instantiates respawnPrefab at the location
// of all game objects 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 game objects 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 game objects are tagged with 'Enemy'");
}
}
}