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

DontDestroyOnLoad как не удалять внутренние объекты

СообщениеДобавлено: 17 ноя 2017, 18:58
artem1414
Ребят,в скрипте написано,что при нажатии первый объект клонируется(Instantiate)а также есть DontDestroyOnLoad на втором объекте,в общем второй объект на котором строчка DontDestroyOnLoad
главный,ну или дочерний я точно не знаю как называется,ну в общем в нём находится второй объект в котором instantiate,ну и должно быть так,при нажатии объект клонируется,всё бы ничего,но объект с DontDestroyOnLoad переходит как-бы вниз(не в этой сцене),а объекты которые клонируются не переходят,они остаются наверху(в обычной сцене),а нужно чтобы эти клоны были в нём,то есть сам объект с instantiate находится в объекте который не должен удалиться и они вдвоём переходят в загружённую сцену,а вот клоны они не находятся в нём,они на обычной сцене,как исправить,нужно чтобы клоны как и их оригинал находились в объекте с DontDestroyOnLoad

Re: DontDestroyOnLoad как не удалять внутренние объекты

СообщениеДобавлено: 17 ноя 2017, 19:59
Anonymyx
Ничего не понял.
Вы можете менять родителя объекта, .transform.parent = ...
Там же у метода Instantiate() есть такая перегрузка даже.

Re: DontDestroyOnLoad как не удалять внутренние объекты

СообщениеДобавлено: 17 ноя 2017, 20:29
artem1414
Anonymyx писал(а):Ничего не понял.
Вы можете менять родителя объекта, .transform.parent = ...
Там же у метода Instantiate() есть такая перегрузка даже.

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

Re: DontDestroyOnLoad как не удалять внутренние объекты

СообщениеДобавлено: 08 янв 2018, 12:06
Dried09
Вы очевидно неправильно понимаете как работает DontDestroyOnLoad(). Нет никакой особой сцены DontDestroyOnLoad, то что вы имеете ввиду это может быть любая сцена на которой для объекта вызывается метод DontDestroyOnLoad(). Если проще выражаться, то когда этот метод вызывается, то юнити типа далает пометку, что этот GameObject не нужно удалять при загрузке другой сцены, а сама сцена полностью выгружается из памяти.
Вернуть какие либо созданные объекты в текущей сцене в предыдущую нельзя - предыдущая сцена уже не существует. Затолкать в предыдущую сцену какие-либо объекты из текущей можно только если создать объекты, вызвать у них DontDestroyOnLoad() (или повесить их на объект, в скриптах которого вызывается оный), а потом снова загрузить предыдущую сцену, в которую перейдут объекты помеченные для НЕудаления. Однако, при таком раскладе возможна накладка: если в той сцене (в которую нужно типа перенести объекты) изначально есть тот объект, на котором вызывается DontDestroyOnLoad(), то вы после манипуляций получите 2 таких объекта, один исходный, а другой тот, который перенесся из предыдущей сцены обратно.

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