Описание
Находит GameObject по name
и возвращает его.
Эта функция возвращает только активные игровые объекты. Если не удается найти GameObject с name
, возвращается null. Если name
содержит символ '/', он проходит через иерархию как путь.
Из соображений производительности рекомендуется не использовать эту функцию в каждом кадре. Вместо этого кэшируйте результат в переменной-члене при запуске. или используйте GameObject.FindWithTag.
Примечание. Если вы хотите найти дочерний игровой объект, проще использовать Transform.Find.
Примечание. Если игра запущена с несколькими сценами, Find будет выполнять поиск во всех них.
using UnityEngine;
using System.Collections;
// This returns the GameObject named Hand in one of the Scenes.
public class ExampleClass : MonoBehaviour
{
public GameObject hand;
void Example()
{
// This returns the GameObject named Hand.
hand = GameObject.Find("Hand");
// This returns the GameObject named Hand.
// Hand must not have a parent in the Hierarchy view.
hand = GameObject.Find("/Hand");
// This returns the GameObject named Hand,
// which is a child of Arm > Monster.
// Monster must not have a parent in the Hierarchy view.
hand = GameObject.Find("/Monster/Arm/Hand");
// This returns the GameObject named Hand,
// which is a child of Arm > Monster.
hand = GameObject.Find("Monster/Arm/Hand");
}
}
GameObject.Find полезен для автоматического подключения ссылок к другим объектам во время загрузки; например, внутри MonoBehaviour.Awake или MonoBehaviour.Start.
Из соображений производительности рекомендуется не использовать эту функцию в каждом кадре.
Общим шаблоном является присвоение GameObject переменной внутри MonoBehaviour.Start и использование этой переменной в MonoBehaviour.Update.
using UnityEngine;
using System.Collections;
// Find the GameObject named Hand and rotate it every frame
public class ExampleClass : MonoBehaviour
{
private GameObject hand;
void Start()
{
hand = GameObject.Find("/Monster/Arm/Hand");
}
void Update()
{
hand.transform.Rotate(0, 100 * Time.deltaTime, 0);
}
}