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

При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 13 сен 2018, 18:48
Будочка
Здрасти. Вопрос такой.
Создаю куб, на куб вешаю скрипт у которого две публичные переменные типа трансформ. Заполняю переменные, потом куб тащю в окно проекта, создаётся префаб, но у префаба в скрипте не заполнены переменные и заполнить их не получается. Что я делаю не так?

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 13 сен 2018, 19:05
1max1
А это фича такая у юньки, нужно заполнять после создания префаба.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 13 сен 2018, 19:41
Будочка
1max1 писал(а):А это фича такая у юньки, нужно заполнять после создания префаба.

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

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 13 сен 2018, 19:57
1max1
заполнить вручную тоже нельзя

В старте написать:
Синтаксис:
Используется csharp
tr1 = GameObject.Find("NameObj").transform;

Вот тебе и всё заполнение.

p.s. еще можно оставить префаб на сцене и из него создавать другие префабы, тогда сохранятся ссылки.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 13 сен 2018, 23:24
Anonymyx
Префаб не может ссылаться на объектов со сцены.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 14 сен 2018, 13:17
Будочка
Спасибо, понятно. Другими словами, чтобы у экземпляра были заполнены обьектовые переменные в скрипте, то надо в этом же скрипте в онстарте искать обьекты и присваивать. Ну а в редакторе кроме как дублированием обьекта или экземпляра не создать много обьектов с нужными параметрами скрипта.
Появилась ещё небольшая проблема. Делаю в онстарте tr=GameObject.Find("obj").transform;. Он не работает если obj неактивен. Это так и задумано?

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 14 сен 2018, 14:07
KanycTa
Будочка писал(а):tr=GameObject.Find("obj").transform;. Он не работает если obj неактивен. Это так и задумано?


Если указывать ссылку на GameObject то вроде будет искать

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 14 сен 2018, 14:15
1max1
Это так и задумано?

Угу :D
Кинь под пустышку свой неактивный объект, потом найди пустышку и уже у пустышки бери нужный объект:
tr = GameObject.Find("obj").transform.Find("nameChild");
Скрытый текст:
Изображение

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 14 сен 2018, 14:16
Tolking
1) пефаб кидаешь на сцену
2) указываешь объекты сцены в префабе на сцене
3) сцену сохраняешь
4) Профит

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 14 сен 2018, 20:19
Anonymyx
указываешь объекты сцены в префабе на сцене

Если он на сцене, то это уже не префаб. Префаб - чертеж. На сцене - экземпляр префаба. Соре.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 15 сен 2018, 00:17
Будочка
Tolking писал(а):1) пефаб кидаешь на сцену
2) указываешь объекты сцены в префабе на сцене
3) сцену сохраняешь
4) Профит

в том то и прикол, что у меня 20 сцен и на каждой сцене по 20-40 таких объектов. Хотелось в префабе один раз указать и потом понаделать экземпляров. Но при создании префаба трансформы скидываются на none.

Тут у меня ещё одна проблема. Из скрипта инстанциирую экземпляр, при этом ссылку на префаб получаю через публичную переменную в которую перенесён префаб из окна проекта. Сейчас мне понадобилась делать экземпляры того или иного префаба в зависимости от условий. Делать 20 публичных переменных для префабов помоему противоестественно. Можно как-то из скрипта находить префаб и делать экземпляры без использования публичных переменных?

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 15 сен 2018, 00:35
waruiyume
Вы хотите в префабе указать ссылки с одной сцены и использовать в 19 других?
Создайте класс а-ля RefsHolder:MonoBehabiour, повесьте его на объект сцены, назначьте ссылки в нём.
В классе который висит на префабе используйте ссылки из этого объекта, находя его по тегу или по типу на сцене.

Засунуть префабы в массив и выбирать нужный по имени например.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 15 сен 2018, 01:10
Tolking
Ну и смысл это все городить если можно просто в сцене один раз настроить?

в том то и прикол, что у меня 20 сцен и на каждой сцене по 20-40 таких объектов. Хотелось в префабе один раз указать и потом понаделать экземпляров.

Делаешь пустышку, кидаешь на нее все твои кубы и объекты и из пустышки делаешь префаб...

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 15 сен 2018, 07:18
1max1
Можно как-то из скрипта находить префаб и делать экземпляры без использования публичных переменных?

Помимо того что сказали выше еще можно сделать примерно так:
Синтаксис:
Используется csharp
var randomPrefab = Resources.Load("Pref" + Random.Range(0,10).ToString()) as GameObject;

При этом в Assets должна быть папка Resources, в которой будут файлы Pref1, Pref2, Pref3 и т.д.

Re: При создании префаба скидываются настройки скрипта.

СообщениеДобавлено: 15 сен 2018, 10:10
Будочка
waruiyume писал(а):Вы хотите в префабе указать ссылки с одной сцены и использовать в 19 других?

Нет. Просто имелось ввиду, что указывать объекты сцены в экземпляре на сцене примерно 400-800 раз я запарюсь.
Это надо делать дублированием объекта, т.е получается что префабы в редакторе частично теряют свой первоначальный замысел - создавать объекты с уже настроенными компонентами.
Всем большое спасибо, тему можно закрывать. И плюсики всем как поставить?