Страница 1 из 2

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

СообщениеДобавлено: 13 фев 2017, 15:30
konstantin666
Столкнулся с таким вопросом, создаю префаб на сцене, при нажатии на него он должен взаимодействует с текстом в скрипте, проблема в том,что задать скрипту-префабу ссылку на объект из сцены не могу, не в том корне лежит, поиском в методе Start, через GameObj.Find() результата не дает, подскажите как это можно исправить.
ИзображениеИзображение

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

СообщениеДобавлено: 13 фев 2017, 15:39
Brightori
Я бы попробовал по ID найти объект

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


чота я тупанул, а нельзя там паблик переменную создать и руками запихать туда текст? что то не понимаю сути проблемы =_=

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

СообщениеДобавлено: 13 фев 2017, 16:02
konstantin666
Brightori писал(а):Я бы попробовал по ID найти объект

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

Он не хочет перемещаться, а в окне выбора объектов - пусто, что бы понять в чем проблема - создайте скрипт с публичным текстом и повесьте его на объект, далее создать объект префаба, создайте Text в Canvas и порпобуйте в этот префаб со скриптом запихнуть этот созданный текст

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

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

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

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

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


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

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

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

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


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

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

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


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


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

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

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

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


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

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

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

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

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

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

СообщениеДобавлено: 13 фев 2017, 18:30
waruiyume
Brightori. покажите ка нам как префаб может содержать ссылку на объект сцены.

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

СообщениеДобавлено: 13 фев 2017, 18:36
samana
Brightori писал(а):ну это был ответ тебе про то что префабы - "А префаб вроде и не может даже логически иметь ссылку на некий объект из сцены (если этот объект не принадлежит этому же префабу)."

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


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

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

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


Это неплохое решение и для оптимизации хорошо будет.

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

СообщениеДобавлено: 13 фев 2017, 18:40
Brightori
waruiyume писал(а):Brightori. покажите ка нам как префаб может содержать ссылку на объект сцены.



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

void AimTurret ()

{

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

}

Это пример скрипта моего префаба турели, который ссылается на другие объекты в сцене. В чем проблемы то?

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

СообщениеДобавлено: 13 фев 2017, 18:50
Brightori
2TC

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

посмотри этот урок, там есть рандомная генерация движущихся объектов, в том числе с интервалами, в принципе приписать к ним активаторы более нужные тебе не сложно. Ибо может я не разобрался в вопросе (что не исключено). Но я так понял что твой геймплей состоит из кликов по шарикам и их улетанию вверх, может быть с элементами мач3. Ну так вот, если это так, то я бы таки ориентировался на тот урок.

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

СообщениеДобавлено: 13 фев 2017, 18:52
waruiyume
Проблема в том, что ссылка находится в рантайме, причём видимо код вызывается у инстансе префаба, а не у префаба.