Передать ссылку созданному префабу

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Передать ссылку созданному префабу

Сообщение konstantin666 13 фев 2017, 15:30

Столкнулся с таким вопросом, создаю префаб на сцене, при нажатии на него он должен взаимодействует с текстом в скрипте, проблема в том,что задать скрипту-префабу ссылку на объект из сцены не могу, не в том корне лежит, поиском в методе Start, через GameObj.Find() результата не дает, подскажите как это можно исправить.
ИзображениеИзображение
konstantin666
UNIт
 
Сообщения: 106
Зарегистрирован: 19 июл 2016, 18:11

Re: Передать ссылку созданному префабу

Сообщение Brightori 13 фев 2017, 15:39

Я бы попробовал по ID найти объект

https://docs.unity3d.com/ScriptReferenc ... nceID.html


чота я тупанул, а нельзя там паблик переменную создать и руками запихать туда текст? что то не понимаю сути проблемы =_=
Brightori
UNец
 
Сообщения: 36
Зарегистрирован: 09 фев 2017, 16:36

Re: Передать ссылку созданному префабу

Сообщение konstantin666 13 фев 2017, 16:02

Brightori писал(а):Я бы попробовал по ID найти объект

https://docs.unity3d.com/ScriptReferenc ... nceID.html
чота я тупанул, а нельзя там паблик переменную создать и руками запихать туда текст? что то не понимаю сути проблемы =_=

Он не хочет перемещаться, а в окне выбора объектов - пусто, что бы понять в чем проблема - создайте скрипт с публичным текстом и повесьте его на объект, далее создать объект префаба, создайте Text в Canvas и порпобуйте в этот префаб со скриптом запихнуть этот созданный текст
konstantin666
UNIт
 
Сообщения: 106
Зарегистрирован: 19 июл 2016, 18:11

Re: Передать ссылку созданному префабу

Сообщение samana 13 фев 2017, 16:46

А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу). Ведь префаб - это заготовка, шаблон, он должен быть самостоятельным.

Порассуждаем:
Допустим Unity сделала так, как вы хотите, и в префабе появилась ссылка на текст из какой-то сцены. А что потом? Допустим вы удалили сцену с текстом и к какому тексту теперь будет обращаться этот префаб? А если вы создали экземпляр такого префаба в другой сцене, то что, этот префаб будет обращаться к тексту, которого даже нет в текущей сцене? Конечно нет, и это правильно. Поэтому префаб может иметь ссылки только на "свои внутренности" или на другие префабы.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Передать ссылку созданному префабу

Сообщение Brightori 13 фев 2017, 17:55

Префаб может содержать скрипт, который находит объекты и цепляет их к префабу. Например у меня есть префаб истребитель, у него есть цели. Скрипт может содержать генерируемый список целей, куда добавит объекты со сцены, и будет использовать их. Точно также не мешает префабу найти текст и подцепить его. Другой вопрос что это странный заход, и хотелось бы понять цель данного захода. .


samana писал(а):А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу). Ведь префаб - это заготовка, шаблон, он должен быть самостоятельным.

Порассуждаем:
Допустим Unity сделала так, как вы хотите, и в префабе появилась ссылка на текст из какой-то сцены. А что потом? Допустим вы удалили сцену с текстом и к какому тексту теперь будет обращаться этот префаб? А если вы создали экземпляр такого префаба в другой сцене, то что, этот префаб будет обращаться к тексту, которого даже нет в текущей сцене? Конечно нет, и это правильно. Поэтому префаб может иметь ссылки только на "свои внутренности" или на другие префабы.
Brightori
UNец
 
Сообщения: 36
Зарегистрирован: 09 фев 2017, 16:36

Re: Передать ссылку созданному префабу

Сообщение samana 13 фев 2017, 18:00

Brightori писал(а):Другой вопрос что это странный заход, и хотелось бы понять цель данного захода. .


Может я не понял, но вы меня потом процитировали и вот хотел узнать, этот вопрос адресован мне или топикстартеру?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Передать ссылку созданному префабу

Сообщение Brightori 13 фев 2017, 18:18

samana писал(а):
Brightori писал(а):Другой вопрос что это странный заход, и хотелось бы понять цель данного захода. .


Может я не понял, но вы меня потом процитировали и вот хотел узнать, этот вопрос адресован мне или топикстартеру?


ну это был ответ тебе про то что префабы - "А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу)."

Как раз может.
Brightori
UNец
 
Сообщения: 36
Зарегистрирован: 09 фев 2017, 16:36

Re: Передать ссылку созданному префабу

Сообщение konstantin666 13 фев 2017, 18:22

Brightori писал(а):Префаб может содержать скрипт, который находит объекты и цепляет их к префабу. Например у меня есть префаб истребитель, у него есть цели. Скрипт может содержать генерируемый список целей, куда добавит объекты со сцены, и будет использовать их. Точно также не мешает префабу найти текст и подцепить его. Другой вопрос что это странный заход, и хотелось бы понять цель данного захода. .


samana писал(а):А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу). Ведь префаб - это заготовка, шаблон, он должен быть самостоятельным.

Порассуждаем:
Допустим Unity сделала так, как вы хотите, и в префабе появилась ссылка на текст из какой-то сцены. А что потом? Допустим вы удалили сцену с текстом и к какому тексту теперь будет обращаться этот префаб? А если вы создали экземпляр такого префаба в другой сцене, то что, этот префаб будет обращаться к тексту, которого даже нет в текущей сцене? Конечно нет, и это правильно. Поэтому префаб может иметь ссылки только на "свои внутренности" или на другие префабы.

У меня есть несколько объектов с рандомной позицией, которые движутся верх по оси y, по нажатию на объекты Text = i--;, затем удаляются, для того что бы объекты спавнились, я должен указать ссылку на объект, когда объекты выходят за пределы видимого экрана, я их удаляю, это все работает, но объект на которого я ссылаюсь постоянно движется верх, если удалится - ошибка, я не хотел блуждающего объекта в космосе проекта, поэтому сделал его префабом, а здесь вот такая проблема с текстом.
и получается:
делаю через Button - ссылочный объект улетает верх навсегда, а рандомное появление берется из этого объекта, это основа.
делаю через raycast - не могу передать ссылку текста в срикпт, который находится на префабе-объекте.
konstantin666
UNIт
 
Сообщения: 106
Зарегистрирован: 19 июл 2016, 18:11

Re: Передать ссылку созданному префабу

Сообщение konstantin666 13 фев 2017, 18:25

Думаю, может просто ограничить движение этого объекта и возвращать его в начальное положение или включать скрипт движения верх по тегу или имени, в зависимости от условий внутри
Последний раз редактировалось konstantin666 13 фев 2017, 18:30, всего редактировалось 2 раз(а).
konstantin666
UNIт
 
Сообщения: 106
Зарегистрирован: 19 июл 2016, 18:11

Re: Передать ссылку созданному префабу

Сообщение waruiyume 13 фев 2017, 18:30

Brightori. покажите ка нам как префаб может содержать ссылку на объект сцены.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Передать ссылку созданному префабу

Сообщение samana 13 фев 2017, 18:36

Brightori писал(а):ну это был ответ тебе про то что префабы - "А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу)."

Как раз может.


Но ведь это вы скорее всего говорите уже об игровом режиме, когда префаб создался, нашел себе нужные объекты и сохранил на них ссылки. А в эдит режиме так наверно не получится, да и смысла не имеет.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Передать ссылку созданному префабу

Сообщение samana 13 фев 2017, 18:38

konstantin666 писал(а):Думаю, может просто ограничить движение этого объекта и возвращать его в начальное положение или включать скрипт движения верх по тегу или имени, в зависимости от условий внутри


Это неплохое решение и для оптимизации хорошо будет.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Передать ссылку созданному префабу

Сообщение Brightori 13 фев 2017, 18:40

waruiyume писал(а):Brightori. покажите ка нам как префаб может содержать ссылку на объект сцены.



я уже описывал выше, да очень просто

void AimTurret ()

{

найти объекты с тегом цель
добавить их в массив (враги).
если враги[x] ближе чем 40 метров - стрелять по цели

}

Это пример скрипта моего префаба турели, который ссылается на другие объекты в сцене. В чем проблемы то?
Brightori
UNец
 
Сообщения: 36
Зарегистрирован: 09 фев 2017, 16:36

Re: Передать ссылку созданному префабу

Сообщение Brightori 13 фев 2017, 18:50

2TC

https://unity3d.com/ru/learn/tutorials/ ... r-tutorial

посмотри этот урок, там есть рандомная генерация движущихся объектов, в том числе с интервалами, в принципе приписать к ним активаторы более нужные тебе не сложно. Ибо может я не разобрался в вопросе (что не исключено). Но я так понял что твой геймплей состоит из кликов по шарикам и их улетанию вверх, может быть с элементами мач3. Ну так вот, если это так, то я бы таки ориентировался на тот урок.
Brightori
UNец
 
Сообщения: 36
Зарегистрирован: 09 фев 2017, 16:36

Re: Передать ссылку созданному префабу

Сообщение waruiyume 13 фев 2017, 18:52

Проблема в том, что ссылка находится в рантайме, причём видимо код вызывается у инстансе префаба, а не у префаба.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29