Юнити создание префаба и заполнение компонентов в нем

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Юнити создание префаба и заполнение компонентов в нем

Сообщение Legend2856 27 фев 2019, 21:53

При переключении оружия
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }


Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }


Но characterInventory и targetLook у оружия в инспекторе показывает none, а в префабе type mismatch. Хотя со 2 попытки переключить оружие все начинает работать нормально. Что делать?
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Юнити создание префаба и заполнение компонентов в нем

Сообщение AngryCat 01 мар 2019, 18:34

Legend2856 писал(а):При переключении оружия
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }


Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }


Но characterInventory и targetLook у оружия в инспекторе показывает none, а в префабе type mismatch. Хотя со 2 попытки переключить оружие все начинает работать нормально. Что делать?

Нужен полный код. Сейчас лишь могу сказать, что это
Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }

должно стоять после этого
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }
Здесь могла бы быть ваша реклама.
Аватара пользователя
AngryCat
Старожил
 
Сообщения: 716
Зарегистрирован: 20 июл 2018, 22:29
Skype: Дискорд - Флеш#4099

Создание префабов по время игры и заполнение их

Сообщение Legend2856 01 мар 2019, 20:24

При переключении оружия
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }


Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }


Но characterInventory и targetLook у оружия в инспекторе показывает none, а в префабе type mismatch. Хотя со 2 попытки переключить оружие все начинает работать нормально. Что делать?
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение seaman 01 мар 2019, 20:56

Создание префабов по время игры

Полная чушь.
Для начала разберитесь - что такое префаб и где его вообще можно создать.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Создание префабов по время игры и заполнение их

Сообщение Legend2856 01 мар 2019, 21:01

seaman писал(а):
Создание префабов по время игры

Полная чушь.
Для начала разберитесь - что такое префаб и где его вообще можно создать.


Что именно здесь чушь?
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение seaman 01 мар 2019, 21:02

Вы видите? Что процитировано, то и чушь.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Создание префабов по время игры и заполнение их

Сообщение 1max1 01 мар 2019, 21:02

В префаб, на сколько я помню нельзя запихнуть ссылку со сцены в инспектор, не, визуально-то можно, но объект потеряет ее, когда будет создан из этого префаба.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Создание префабов по время игры и заполнение их

Сообщение Legend2856 01 мар 2019, 21:04

seaman писал(а):Вы видите? Что процитировано, то и чушь.

Так в чем проблема здесь? Вот в этом куске кода
Синтаксис:
Используется csharp
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);  //ячейка инвентаря
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
 
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение Friend123 01 мар 2019, 21:05

Если бы у меня были очки - они бы треснули от такого хардкода. Что тут вообще хочет автор?
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Юнити создание префаба и заполнение компонентов в нем

Сообщение Legend2856 01 мар 2019, 21:06

AngryCat писал(а):
Legend2856 писал(а):При переключении оружия
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }


Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }


Но characterInventory и targetLook у оружия в инспекторе показывает none, а в префабе type mismatch. Хотя со 2 попытки переключить оружие все начинает работать нормально. Что делать?

Нужен полный код. Сейчас лишь могу сказать, что это
Синтаксис:
Используется csharp
if(selectWeapon == 1)
        {
            if (weapon[0].id != 0)
            {
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
            }
        }

должно стоять после этого
Синтаксис:
Используется csharp
if (Input.GetKeyDown(KeyCode.Alpha1) && SelWeapon != 1)
            {
                SelWeapon = 1;
                characterIK.rh_Weight = 0;

                characterInventory.DestroyWeapon();
                characterInventory.SelectWeapon(SelWeapon);
  }


Весь код не нужен, проблема в этом куске

Синтаксис:
Используется csharp
                objWeapon = Instantiate(weapon[0].weaponProperties.Weapon, parent);  //ячейка инвентаря
                activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
                activeWeapon.targetLook = targetLook; //не заполняется
                activeWeapon.characterInventory = characterInventory; //не заполняется
 
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение Legend2856 01 мар 2019, 21:08

1max1 писал(а):В префаб, на сколько я помню нельзя запихнуть ссылку со сцены в инспектор, не, визуально-то можно, но объект потеряет ее, когда будет создан из этого префаба.


Может нужно использовать Resources.Load....?
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение Friend123 01 мар 2019, 21:09

Ну если идет переключение оружия - почему первоначально не заполнить некий лист и из него уже "доставать" (активировать по сути) оружие
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Создание префабов по время игры и заполнение их

Сообщение Legend2856 01 мар 2019, 21:11

Friend123 писал(а):Ну если идет переключение оружия - почему первоначально не заполнить некий лист и из него уже "доставать" (активировать по сути) оружие


Оружия подбираются, и в игре довольно-таки много разных оружий. Как это скажется на производительности?
Legend2856
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 июл 2018, 21:32

Re: Создание префабов по время игры и заполнение их

Сообщение seaman 01 мар 2019, 21:33

Так в чем проблема здесь?

Похоже Вы все же не видите. Ослепли?
НЕЛЬЗЯ создать префабы во время игры. Название Вашей темы - чушь.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Юнити создание префаба и заполнение компонентов в нем

Сообщение seaman 01 мар 2019, 21:36

НУ а ошибка тут:
activeWeapon = weapon[0].weaponProperties.Weapon.GetComponent<Weapon>();
И именно потому, что Вы совсем не понимаете что Вы делаете
Зачем Вам компонент с префаба? Почему с префаба?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

След.

Вернуться в Почемучка

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

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