Собственно вопрос, как заменить скриптами в игре один объект другим, чтобы не потерялись все Child/parent связи, как минимум. Это нужно, чтобы менять одежду/шляпу/ботинки/лицо у персонажа для кастомизации.
тот старый пример из Unity про кастомизацию персонажа не предлагать, ибо там просто скрывают не используемую одежду, что не выгодно вообще для оптимизации в целом.
это скрин из того неправильного примера кастомизации
Добавлено (02 сентября 2015, 06:05) --------------------------------------------- Этот вариант тоже не подходит, ибо у меня на некоторых шмотках будут специальные скрипты или другие любые посторонние элементы.
Код
GetComponent(MeshFilter).mesh = anotherMesh;
Сообщение отредактировал alexsilent - Среда, 02 Сентября 2015, 06:15
а удалять старый перфаб и ставить на его место новый?
ну да я и имею ввиду так, но как сделать скриптом, чтоб сохранить все связи родителей и детей, и чтобы дети не удалились вместе с удалённым старым объектом!?
другими словами Switch Game Object
Сообщение отредактировал alexsilent - Среда, 02 Сентября 2015, 06:14
1: GameObject newElement = (GameObject)Instantiate(newElPrfb); 2: newElement.transform.parent = oldEl.transform.parent; 3: newElement.transform.position = oldEl.transform.position; 4: newElement.transform.localScale = oldEl.transform.localScale; 5: foreach(Transform tr in oldEl.transform) 6: tr.parent = newElement.transform; // тут может выбить - т.к. список дочерних трансформов олдЕл изменится 7: // тогда нужен другой способ их всех перебрать - см под спойлером 8: Destroy(oldEl);
после 4:
Код
// и есть еще несколько вариантов.. 5: while (oldEl.transform.childCount > 0) 6: oldEl.transform.GetChild(0).parent = newElement.transform;
оно? Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Среда, 02 Сентября 2015, 09:21
KamiRonin, спасибо! Вполне хороший выход. Я пока временно придумал другой выход.
Сделать невидимый скелет и на этот скелет навешивать уже префабы графики/одежды и аксессуаров. То есть не нужно будет мучиться с родителями и детьми. Хотя количество GameObject значительно повысится на сцене, надеюсь это не сильно скажется на производительности, из-за того что ещё будут много дополнительных костей.
Такой вариант не подойдет? - Отвязываем всех детей и привязываем их к пустому обьекту - Удаляем нужный обьект и создаем, обьект который нам нужен - Отвязываем детей от пустого обьекта и привязываем к вновь созданному