GameObject.Find
This function only returns active GameObjects. If no GameObject with name can be found, null is returned. If name contains a ‘/’ character, it traverses the hierarchy like a path name.
вместо этого, при запуске кэшируйте (храните) результат функции в поле или используйте GameObject.FindWithTag.
Note: If you wish to find a child GameObject, it is often easier to use Transform.Find.
Note: If the game is running with multiple scenes then Find will search in all of them.
GameObject.Find is useful for automatically connecting references to other objects at load time; for example, inside MonoBehaviour.Awake or MonoBehaviour.Start.
Из соображений по производительности не рекомендуется использовать эту функцию каждый кадр,
Как найти объект по имени и тегу в Unity

Приветствую Вас, дорогие разработчики. В данной статье мы научимся искать игровые объекту по его имени, и по тегу. Ведь при разработке игр нам довольно часто нужно находить игровые объекты, для дальнейшего выполнения каких-либо действий. Приступим сразу к делу.
Поиск объекта по имени
Для того, чтобы найти объект по его имени, необходимо воспользоваться методом GameObject.Find. Посмотрим реализацию данного метода на примере:
Обратите внимание, что в первой строке мы создали переменную obj, чтобы в ней хранить ссылку на игровой объект. А в пятой строке, воспользовавшись методом GameObject.Find, получили сам объект по его имени.
Поиск объекта по тегу
Теперь давайте получим ссылку на наш объект по тегу. Для этого воспользуемся методом GameObject.FindGameObjectWithTag:
Как видите, смысл такой же, как и в предыдущем примере. Всё очень просто. Только не забудьте указать тег для Вашего объекта, перед запуском данного скрипта. Иначе объект найден не будет.
unity3d
Поиск и сбор GameObjects
Будьте осторожны при поиске GameObjects во время выполнения, поскольку это может быть ресурсоемким. В частности: не запускайте FindObjectOfType или найдите в Update, FixedUpdate или, в более общем плане, в методе, называемом одним или несколькими моментами на кадр.
- Вызовите методы выполнения FindObjectOfType и Find только в случае необходимости
- FindGameObjectWithTag имеет очень хорошую производительность по сравнению с другими методами на основе строк. Unity хранит отдельные вкладки на помеченных объектах и запрашивает их вместо всей сцены.
- Для «статических» GameObjects (таких как элементы пользовательского интерфейса и сборные файлы), созданных в редакторе, используйте сериализуемую ссылку GameObject в редакторе
- Храните свои списки GameObjects в списке или массивах, которыми вы управляете сами
- В общем случае, если вы создаете экземпляр множества GameObjects того же типа, взгляните на Object Pooling
- Кэш ваших результатов поиска, чтобы избежать дорогостоящих методов поиска снова и снова.
Идти глубже
Помимо методов, которые приходят с Unity, относительно легко разработать собственные методы поиска и сбора.
В случае FindObjectsOfType() вас могут быть ваши скрипты, которые хранят список в static коллекции. Гораздо быстрее перебирать готовый список объектов, чем искать и проверять объекты со сцены.
Или создайте скрипт, который хранит их экземпляры в Dictionary основе строк, и у вас есть простая система тегов, которую вы можете расширить.
Поиск по названию GameObject
| Pros | Cons |
|---|---|
| Легко использовать | Производительность ухудшается по количеству игровых объектов в сцене |
| Строки — это слабые ссылки и подозрения на ошибки пользователя |
Поиск по тегам GameObject
| Pros | Cons |
|---|---|
| Возможность поиска как отдельных объектов, так и целых групп | Строки — это слабые ссылки и подозрения на ошибки пользователя. |
| Относительно быстрый и эффективный | Код не переносится, поскольку теги жестко закодированы в сценариях. |
Вставка в сценарии в режиме редактирования
| Pros | Cons |
|---|---|
| Отличное выступление | Коллекция объектов статическая |
| Портативный код | Может ссылаться только на GameObjects с той же сцены |
Поиск GameObjects с помощью скриптов MonoBehaviour
FindObjectOfType() возвращает null если ни один не найден.
How to find gameobject at runtime in unity?
In this article, we will see, How to find gameobject at runtime in unity using C#. I will explain each and every ways of finding game objects at runtime. So if you are interested then let’s begin.
Introduction
There are different ways to find gameobject at runtime in unity, We are gonna cover all of those ways in this article, So let’s start.
So first we will look at what are the actual ways to find gameobject at runtime in unity. So There are several ways of finding gameobject at runtime
Ways to find gameobject at runtime in unity
- Gameobject.Find.
- Resources.FindObjectsOfTypeAll.
- Find gameobject with tag.
- Transform.Find.
- transform.GetChild.
For instance, We will find this gameobject (shown in the image below) In different ways.

Find Gameobjects At Runtime In Unity C#
As you can see in the above image I have highlighted the “Destroy Obj” Gameobject, And we will be finding this gameobject through this article in different-different ways. So let’s start with our first way of finding gameobject at runtime.
First, we will see how to find gameobject with Gameobject.Find(“”).
1. Find gameobject with Gameobject.Find
The first way to find gameobject at runtime in unity is the Gameobject.Find. In order to find our gameobject called “Destroy Obj”, Here is a simple code:
Here I have used this code in the Start function but you can use it where ever you need it, But if possible always try to do it in Start, Awake and OnEnable Function and try to avoid it using in loops or Update Function.
Note :- It will only work if the object that we are finding is active in the hierarchy, If your gameobject is not active in the hierarchy and you want to find it at runtime then you can try the other methods shown below.
But this way to find gameobject at runtime in unity is heavy when you use it in Update method, So try to always use in Start method and take a reference of it in variable and use it wherever you want it.
2. Resources.FindObjectsOfTypeAll
This function can return any type of Unity object that is loaded, including game objects, prefabs, materials, meshes, textures, etc. It will also list internal objects, therefore be careful with the way you handle the returned objects.