Не может быть проще, просто назначить их различных переменных
public GameObject johnCharacterOnLeft;
public GameObject johnCharacterWhoJoinsLater;
void Start()
{
johnCharacterOnLeft.SetActive(true);
johnCharacterOnLeft.Whatever(true);
johnCharacterOnLeft.Whatever(true);
johnCharacterOnLeft.Whatever(true);
johnCharacterWhoJoinsLater.SetActive(false);
johnCharacterWhoJoinsLater.Whatever(false);
johnCharacterWhoJoinsLater.Whatever(false);
...
}
Обратите внимание, что, как правило, когда вы изучаете, не использования Find. Это так просто. Используйте общедоступные переменные и перетащите, чтобы подключиться к инспектору.
(Если кто-то читает еще не знает, как перетащить для подключения в инспекторе, проверить любой основной tutorial.)
Если вы хотите, чтобы найти все объекты с определенный тег:
GameObject[] allCats;
allCats = GameObject.FindGameObjectsWithTag("cat");
foreach (GameObject g in allCats)
Debug.Log("I found one, name is: " +g.name);
Если вы хотят, чтобы найти один из тех, кто с определенным именем вы должны искать их все ..
GameObject[] allCats;
allCats = GameObject.FindGameObjectsWithTag("cat");
foreach (GameObject g in allCats)
{
Debug.Log("I found one, name is: " +g.name);
if (g.name == "Felix")
{
Debug.Log("I did find Felix the cat");
g.Whatever ...
}
Если вы хотите, чтобы найти все объекты с определенным именем ...
это очень важно понять, что
... вы просто не можете сделать это в Unity - это просто не имеет смысла.
Жизненный цикл жизни - Find
- это хак, который вы никогда не должны использовать в любом случае, кроме как в редких ситуациях. Если вам (по какой-то причине?) Нужно «найти» все игровые объекты с определенным именем, вы должны просто просмотреть каждую вещь в сцене (что не так просто сделать). Вы можете легко это сделать. Но нет абсолютно никакой причины, по которой вы это сделаете.
Обратите внимание, что только один пример .. говорят, что у вас в вашей сцене было множество вещей «кошки». Очень просто - ничего сложнее, чем это - вы бы получили их все в одной и той же папке. (То есть все под одним и тем же держателем игрового объекта.) Это всего лишь один невероятно простой подход, чтобы полностью избежать той проблемы, с которой вы сталкиваетесь.
Опять буквально нет никакого способа найти «все игровые объекты с тем же именем» - Find
вызова хак, который никогда не должен был быть в единстве; у них явно нет
И самое главное не забывайте ... Найти не работает, если неактивно!
Find
звонок - это взлом, который никогда не должен был быть в Unity: всегда помните он даже не работает на неактивных объектах. Поскольку они бросили концепцию «найти имя», вероятно, самое лучшее, что она не работает на неактивных объектах: но все это путаница - просто не используйте «найти», никогда.
В частности, как новичок просто перетащить в инспекторе - это честно, что легко. (И опять же, почти во всех случаях ваши вещи начнут неактивно, поэтому, конечно, вы должны это сделать, так как вы не можете «найти» неактивные вещи.)
(И примечание - не забывайте, что если вы просто введите сценарий типа «босс», скажем, ваш или SoundEffects
, никогда не пользуйтесь поиском. Просто сделайте this easy idiom.)
*** ПРИМЕЧАНИЕ *** - одна строка вашего кода была очень запутанной, так как она ссылалась на «этот» игровой объект. Я отредактировал его, чтобы избежать конфузии. – Fattie