Параметры
n | Имя ребенка, которого нужно найти. |
Возвращает
Transform Найденное дочернее преобразование. Null, если дочерний элемент с совпадающим именем не найден.
Описание
Находит дочерний элемент по имени n
и возвращает его.
Если дочерний элемент с именем n
не найден, возвращается null. Если n
содержит символ '/', он будет обращаться к Преобразованию в иерархии как имя пути.
Примечание.Найти не выполняет рекурсивный спуск вниз по иерархии преобразования.
Примечание. Найти может найти преобразование отключенного игрового объекта.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
public GameObject player;
public GameObject gun;
public Transform ammo;
//Invoked when a button is clicked.
public void Example()
{
//Finds and assigns the child named "Gun".
gun = player.transform.Find("Gun").gameObject;
//If the child was found.
if (gun != null)
{
//Find the child named "ammo" of the gameobject "magazine" (magazine is a child of "gun").
ammo = gun.transform.Find("magazine/ammo");
}
else Debug.Log("No child with the name 'Gun' attached to the player");
}
}
Как описано, Найти не переходит по иерархии Transform. Найти будет искать только указанный список дочерних элементов, ищущих именованное преобразование. В следующем примере показан результат Найти поиска объектов GameObject. Имя каждого GameObject используется в Найти. Вот почему два игровых объекта на одном уровне иерархии обнаруживаются и сообщаются.

// В ExampleClass есть GameObject с тремя прикрепленными сферами.
// Два из них являются дочерними элементами GameObject. Третий
// преобразование, сфера3, является потомком сферы2. Найти() делает
// не найти этого потомка.
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void Start()
{
Transform result;
for (int i = 1; i < 4; i++)
{
string sph;
sph = "sphere" + i.ToString();
result = gameObject.transform.Find(sph);
if (result)
{
Debug.Log("Found: " + sph);
}
else
{
//Найти() не находит сферу3
Debug.Log("Did not find: " + sph);
// Но мы можем получить к нему доступ с помощью символа '/' или с помощью GetChild()
Transform newresult;
newresult = gameObject.transform.Find("sphere2/sphere3");
if (newresult)
{
Debug.Log("But now found:" + sph);
}
}
}
}
}