параметры при рожании объекта
|
|
Ranger | Дата: Воскресенье, 10 Ноября 2013, 11:12 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Добрый день, коллеги.
Нужно рожать объекты с разными параметрами Можно сделать так:
Код BornObject = GameObject.Instantiate(ResManagerScript.instance.CircleGameObjPref,BornTransform, rotation) as GameObject; BornObject.MainInit(параметры)
Но вопрос, можно ли при instantiate передавать в рожаемый объект параметры сразу в Start()? Если можно, то как?
Спасибо.
----------------------- Вообще-то это не затык, просто заинтересовало.
Сообщение отредактировал Ranger - Воскресенье, 10 Ноября 2013, 12:29 |
|
| |
lakoris | Дата: Воскресенье, 10 Ноября 2013, 12:03 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Ranger, А не проще заранее создать несколько префабов объектов с разными параметрами, а потом раскидывать их, куда тебе угодно? Цитата Ranger ( ) рожаемый О, боже..
|
|
| |
Ranger | Дата: Воскресенье, 10 Ноября 2013, 12:27 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| lakoris, Не проще.
Сообщение отредактировал Ranger - Воскресенье, 10 Ноября 2013, 12:29 |
|
| |
robertono | Дата: Воскресенье, 10 Ноября 2013, 12:45 | Сообщение # 4 |
Чокнутый Кот
Сейчас нет на сайте
| Цитата Ranger ( ) Но вопрос, можно ли при instantiate передавать в рожаемый объект параметры сразу в Start()? Это как? Объясни подробнее пожалуйста.
|
|
| |
Левша | Дата: Воскресенье, 10 Ноября 2013, 12:59 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Если я правильно понял то тебе надо менять параметры в инстансируемых ассетах. В редакторе это будет работать, а в билде нет...
X.cor.R (Prologue)
|
|
| |
Ranger | Дата: Воскресенье, 10 Ноября 2013, 13:08 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Цитата robertono ( ) Это как? Объясни подробнее пожалуйста.
Код BornObject = GameObject.Instantiate(BallPrefab,BallTransform, BallRotation) as GameObject;
Нужно при вызове Start получить параметр.
Код public class ball : MonoBehaviour{ void Start (Color initColor) { Debug.Log("Im"+initColor); }
} --------------- Спасибо PoqXert. Развеял мои сомнения.
Сообщение отредактировал Ranger - Воскресенье, 10 Ноября 2013, 13:09 |
|
| |
PoqXert | Дата: Воскресенье, 10 Ноября 2013, 13:09 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| Цитата Ranger ( ) Но вопрос, можно ли при instantiate передавать в рожаемый объект параметры сразу в Start()? Start() не принимает никаких параметров. Есть 2 выхода: 1. Можно сделать как у тебя в коде, заменить Start() своей функцией и вызвать её. 2. Код BornObject = GameObject.Instantiate(ResManagerScript.instance.CircleGameObjPref,BornTransform, rotation) as GameObject; BornObject.MainInit(параметры); BornObject.параметр1 = значение1; BornObject.параметр2 = значение2; BornObject.параметр3 = значение3;
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
seaman | Дата: Воскресенье, 10 Ноября 2013, 18:20 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| Все очень просто. В Start() запрашивай параметры у своего менеджера объектов. Типа Код void Start() { Pars параметры = Manager.GetParameter(this); } Manager - синглтон, или просто эта функция в нем статик. Берет переданную ссылку на скрипт и отдает необходимые параметры. Типа: Код class Maneger { public static Pars GetParameter(MonoBehaviour script) { if(script.name == "MyName1") return параметры1; if(script.name == "MyName2") return параметры2; } } Если очень хочется можно даже в каждом таком запросе возвращать уникальные параметры...
|
|
| |
Ranger | Дата: Воскресенье, 10 Ноября 2013, 20:03 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| seaman, интересный хак. Правда к моему случаю неприменим, но его стоит "покрутить" отдельно.
|
|
| |