Доступ к children
|
|
labinzevv | Дата: Воскресенье, 28 Февраля 2021, 18:27 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Всем привет. Такой вопрос: Есть GameObject, на нем висит скрипт "S", в скрипте есть переменная public GameObject obj в которую добавлен объект "A" со сцены. При запуске проекта, к объекту "A" в children добавляется один из заспавненных(может быть любым) объектов "В" (при нажатии клавиши на клавиатуре). Так вот, каким образом можно получить доступ к объекту "В" из скрипта "S", чтобы можно было изменить его свойства из созданного мной метода в скрипте "S"?
3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
|
|
| |
Sanchez06 | Дата: Воскресенье, 28 Февраля 2021, 22:34 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Если у тебя скрипт В в единственном экземпляре, то можешь сделать GameObject.GetComponentInChildren(B)
|
|
| |
labinzevv | Дата: Воскресенье, 28 Февраля 2021, 23:02 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата Sanchez06 ( ) Если у тебя скрипт В в единственном экземпляре, то можешь сделать GameObject.GetComponentInChildren(B)
В том то и дело, что объектов В в сцену много спавнится и у них имя и тэг одинаковые, по этому нужно получить доступ именно к тому, который стал child объекту, который висит на public GameObject в скрипте
3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
|
|
| |
drcrack | Дата: Воскресенье, 28 Февраля 2021, 23:50 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Цитата В том то и дело, что объектов В в сцену много спавнится и у них имя и тэг одинаковые, по этому нужно получить доступ именно к тому, который стал child объекту, который висит на public GameObject в скрипте Если внутри одного S может быть только один B, то ниче не меняется, просто делаешь
Код var b = obj.GetComponentInChildren<B>(); Если B это просто обьект без скриптов, можно сделать тупее:
Код var t = obj.transform; var b = t.GetChild(t.childCount - 1).gameObject;
Сообщение отредактировал drcrack - Воскресенье, 28 Февраля 2021, 23:53 |
|
| |
labinzevv | Дата: Понедельник, 01 Марта 2021, 02:03 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Цитата drcrack ( ) Если внутри одного S может быть только один B, то ниче не меняется, просто делаешь Код var b = obj.GetComponentInChildren<B>();
Если B это просто обьект без скриптов, можно сделать тупее: Код
var t = obj.transform; var b = t.GetChild(t.childCount - 1).gameObject;
С этой частью вроде бы разобрался, нашел доступ к объекту B. Спасибо за помощь. Теперь другая проблема возникла: Весь поиск происходит в Update, чтобы объект В менялся в реальном времени, и по этому пока объекта В нету в cild у объекта А, в логе постоянная ошибка "не найден объект cild". Нужно создать условие if, пока child нету, код внутри не выполняется. А вот как пишется это условие, не знаю...
3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
|
|
| |
drcrack | Дата: Понедельник, 01 Марта 2021, 10:06 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Код var b = ... if(b) { ... }
|
|
| |
labinzevv | Дата: Понедельник, 01 Марта 2021, 16:29 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата drcrack ( ) var b = ... if(b) { ... } Во! Точно! То что нужно! Оказалось элементарно). Спасибо за помощь!!!+
3d modeling, unfolding, and texturing. My works: https://vk.com/labinzevv
|
|
| |