| 
				
				Доступ к 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
 |  
| 
 | 
 |    |