Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Объявление

public Transform Find(string n);

Параметры

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 используется в Найти. Вот почему два игровых объекта на одном уровне иерархии обнаруживаются и сообщаются.

GameObject с тремя дочерними элементами. Find() не находит третьего потомка.
// В 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); } } } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3