возможно Вы правы
Я не утверждал, что поиск по тегу идет так как написал Dewa1s. Я не проверял, так что утверждать не могу. Я сказал как будет происходить поиск в словаре, а вот есть ли такой словарь в Юнити?- я сомневаюсь. Во всяком случае Юнитеки в один голос говорят, что Find(любой) - медленная операция. И медленная не из-за строк.
Лучше всего, конечно проверить утверждение Dewa1s, но если оно не подтвердится можно использовать кеш как написано ниже. (Не советую! Лучше просто не привязываться к тегам!)
Если у Вас частый поиск (не однократный в начале игры, в Start как советуют делать),- можно закешировать поиск в том же словаре. Типа (использовать на свой страх и риск, т.к. я не вижу причин частого поиска, при котором такой вариант будет хорош):
Используется csharp
using System.Linq;
static private Dictionary<string, List<GameObject>> cache;
private void Start()
{
cache = new Dictionary<string, List<GameObject>>();
var allObjects = Resources.FindObjectsOfTypeAll(typeof(Transform)).Select(o => ((Transform)o).gameObject);
foreach (var go in allObjects)
{
if (!cache.ContainsKey(go.tag)) cache.Add(go.tag, new List<GameObject>());
cache[go.tag].Add(go);
}
}
Ну и дальше уже ищете в cache свой объект.
Еще раз. Вышеописанный Start будет долгим! Чем больше объектов на сцене, тем дольше. Но потом поиск будет достаточно быстрым.