Как получить ссылки на GameObject - PullRequest
0 голосов
/ 03 января 2019

Привет, мне было интересно, есть ли другие способы активировать GameObject с помощью кода на c #

единственный, кого я знаю, это сделать:

public GameObject box;    
box.SetActive(true);

что действительно здорово, вы можете просто уронить объект на инспектора, но мне было интересно, есть ли другие способы

как использование определенного имени объекта или превращение GameObjects в активный с определенным тегом. Я с трудом пытаюсь найти пример, когда я гуглю его или, может быть, я ищу его неправильно

любой совет?

1 Ответ

0 голосов
/ 03 января 2019

Вы смотрели на GameObject API или Руководство ?

Есть Find , FindWithTag , FindGameObjectsWithTag

или также такие методы, как GetComponentInChildren , FindObjectOfType , FindObjectsOfType
(те, которые вы можете использоватьчтобы найти компонент определенного типа и, следовательно, в соответствии с gameObject вы можете установить (не активировать)

, но так как вы запросили активацию нескольких объектов по тегу:

var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
    obj.SetActive(true);
}

обратите внимание, однако, что это намного дороже, чем с рекомендациями инспектора.Поэтому в общем старайтесь избегать использования этих FindXY методов, если это возможно.

И да, как remy_rm правильно указал в комментариях, вам определенно не следует использовать их в циклах обновления или других методах, которые регулярно вызываются.Вы всегда должны вызывать их, например, в Awake, Start и т. Д. И хранить ссылки для дальнейшего использования


Обновление

Если я правильно понимаю ваш комментарий, выКроме того, есть некоторые дочерние элементы в тех помеченных объектах, которые вы также хотите активировать:

var targetObjects = GameObject.FindGameObjectsWithTag("YourTag");
foreach(var obj in targetObjects)
{
    obj.SetActive(true);
    // also activate all children
    foreach(Transform child in obj.transform)
    {
        child.gameObject.SetActive(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...