Замена модели (решено)

Программирование на Юнити.

Замена модели (решено)

Сообщение Dzen 02 авг 2010, 14:53

Не могу разобраться - можно ли из скрипта на ходу подменять модель объекта? Например есть несколько противников, которые управляются одинаковым скриптом и различаются в общем-то только моделью и параметрами скрипта. Можно ли сделать для них универсальный префаб, который будет подгружать и подставлять нужную модель в зависимости от условий?
Последний раз редактировалось Dzen 03 авг 2010, 11:36, всего редактировалось 1 раз.
Dzen
UNец
 
Сообщения: 20
Зарегистрирован: 30 июл 2010, 18:19

Re: Замена модели

Сообщение Golandez 02 авг 2010, 15:12

Делаете под каждую модель свой префаб и вешаете на нее скрипты,настраиваете.Инстансируете префаб и дестроите по вашим условиям.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Замена модели

Сообщение Dzen 02 авг 2010, 15:55

Golandez писал(а):Делаете под каждую модель свой префаб и вешаете на нее скрипты,настраиваете.Инстансируете префаб и дестроите по вашим условиям.


В том-то и дело, что я бы не хотел делать префаб под каждую модель. Проблемы с реюзабельностью. Если я захочу добавить в префаб скрипт или еще какой-то компонент - мне придется добавлять его в каждый префаб. Или удалить. Хотелось бы править один префаб, а в процессе вешать к нему произвольные модели, коллайдеры и пр.
Dzen
UNец
 
Сообщения: 20
Зарегистрирован: 30 июл 2010, 18:19

Re: Замена модели

Сообщение Dzen 02 авг 2010, 19:13

Что-то я совсем запутался с чайлдами. Можно как-то из скрипта модель из ассетов сделать чайлдом к объекту, на котором висят скрипты перемещения и пр.?
Dzen
UNец
 
Сообщения: 20
Зарегистрирован: 30 июл 2010, 18:19

Re: Замена модели

Сообщение Dzen 03 авг 2010, 11:35

Вопрос решен.
Dzen
UNец
 
Сообщения: 20
Зарегистрирован: 30 июл 2010, 18:19

Re: Замена модели

Сообщение spzero 03 авг 2010, 12:39

Dzen писал(а):Вопрос решен.


А можешь поделиться решением плиз?
spzero
UNец
 
Сообщения: 2
Зарегистрирован: 02 авг 2010, 16:33

Re: Замена модели

Сообщение IIIVSIII 03 авг 2010, 17:51

Dzen писал(а):Вопрос решен.

:D Я от тош думаю неплохо былобы поделится решениям ... ))) Ато вдруг пригодится кому ) :-B
Аватара пользователя
IIIVSIII
UNIт
 
Сообщения: 61
Зарегистрирован: 24 июн 2010, 07:41
Откуда: Кременчуг
  • ICQ

Re: Замена модели (решено)

Сообщение Toshik 03 авг 2010, 18:34

Был бы благодарен за подсказку решения :ymsmug:
Аватара пользователя
Toshik
UNец
 
Сообщения: 36
Зарегистрирован: 17 июн 2010, 20:25
Откуда: Питер

Re: Замена модели (решено)

Сообщение Golandez 03 авг 2010, 19:35

Вешаете на обьект скрипт,через него добавляете к обьекту какие угодно компоненты.Клонируете 300 обьектов.Вносите изменения в скрипт.Получаете изменения на 300-ах обьектах.
P.S. Таким же образом вешаете скрипт на 300 различных обьектов,изменяете скрипт(добавляете обьекту коллайдер,систему частиц,черта лысого),получаете изменения на всех обьектах.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Замена модели (решено)

Сообщение Dzen 03 авг 2010, 21:58

Общее решение. В скрипте основного объекта делаем

Код: Выделить всё
GameObject myModel = (GameObject)Instantiate(Resources.Load("shipstub"));
myModel.transform.parent = gameObject.transform;


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

Код: Выделить всё
public int shipType;

private Object[] modelLib;

modelLib[1] = Resources.Load("ship1");
modelLib[2] = Resources.Load("ship2");

GameObject myModel = (GameObject)Instantiate(modelLib[shipType]);
myModel.transform.parent = gameObject.transform;


Опять же логично вынести библиотеку моделей в отдельный объект (типа менеджера ресурсов), но это уже развитие идеи.

ЗЫ Меня просто убило, что отношение парент-чайлд задается через трансформ, логичнее было бы сделать это в объекте. Ну да не будем придираться.
Dzen
UNец
 
Сообщения: 20
Зарегистрирован: 30 июл 2010, 18:19


Вернуться в Скрипты

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 12