Суббота, 16 Ноября 2024, 16:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
параметры при рожании объекта
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Дата: Воскресенье, 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, интересный хак.
Правда к моему случаю неприменим, но его стоит "покрутить" отдельно.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг