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

Общие вопросы о Unity3D

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

Сообщение artem1414 17 ноя 2017, 18:58

Ребят,в скрипте написано,что при нажатии первый объект клонируется(Instantiate)а также есть DontDestroyOnLoad на втором объекте,в общем второй объект на котором строчка DontDestroyOnLoad
главный,ну или дочерний я точно не знаю как называется,ну в общем в нём находится второй объект в котором instantiate,ну и должно быть так,при нажатии объект клонируется,всё бы ничего,но объект с DontDestroyOnLoad переходит как-бы вниз(не в этой сцене),а объекты которые клонируются не переходят,они остаются наверху(в обычной сцене),а нужно чтобы эти клоны были в нём,то есть сам объект с instantiate находится в объекте который не должен удалиться и они вдвоём переходят в загружённую сцену,а вот клоны они не находятся в нём,они на обычной сцене,как исправить,нужно чтобы клоны как и их оригинал находились в объекте с DontDestroyOnLoad
artem1414
UNITрон
 
Сообщения: 233
Зарегистрирован: 10 фев 2016, 17:27

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

Сообщение Anonymyx 17 ноя 2017, 19:59

Ничего не понял.
Вы можете менять родителя объекта, .transform.parent = ...
Там же у метода Instantiate() есть такая перегрузка даже.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

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

Сообщение artem1414 17 ноя 2017, 20:29

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

Не в этом дело,просто новые объекты которые появляются(клонируются)при помощи Instantiate() находятся в обычной сцене,а тот объект с которого они клонируются находится в сцене DontDestroyOnLoad,и мне нужно чтобы эти новые объекты которые клонируются,клонировались в DontDestroyOnLoad ,а не в обычной сцене ,чтобы на другой сцене они появились эти клоны при помощи DontDestroyOnLoad ,просто они не идут в DontDestroyOnLoad сцену и при загрузке другого уровня появляется только один объект,ну не один,объект который клонируется находится в другом объекте,и этот объект в DontDestroyOnLoad переходит и на другой сцене те два объекта (один в другом)а клоны не переходят,так вот я хочу чтобы эти клоны были вместе с их оригиналом
artem1414
UNITрон
 
Сообщения: 233
Зарегистрирован: 10 фев 2016, 17:27

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

Сообщение Dried09 08 янв 2018, 12:06

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

В любом случае, все это похоже на лютый говнокод, уверен что ваша задача решается куда проще, в чем бы она не заключалась.
Аватара пользователя
Dried09
UNец
 
Сообщения: 39
Зарегистрирован: 01 янв 2015, 17:41


Вернуться в Общие вопросы

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

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