Пятница, 15 Ноября 2024, 12:42

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Зависает Unity при создании объекта
XJIE6yIIIEKДата: Пятница, 23 Февраля 2018, 00:56 | Сообщение # 1
был не раз
Сейчас нет на сайте
Доброго времени суток. Делаю небольшую работу. Возникла проблема с созданием объекта.

Есть дрон. При определённых условиях он пускает ракету в цель.
Код

public GameObject rocket;

Создание ракеты выглядит таким образом:
Код

rocket = Instantiate (rocket, transform.position, transform.rotation) as GameObject;

При выполнении данного куска кода Unity зависает намертво.
При этом, если записывать код таким образом:
Код

Instantiate (rocket, transform.position, transform.rotation);

То объект создаётся, но на него нет референса, а он мне нужен. Что я делаю не так?


Занимайся только тем, что любишь, и этим ты добъёшься большего.

Сообщение отредактировал XJIE6yIIIEK - Пятница, 23 Февраля 2018, 02:15
roma3fonДата: Пятница, 23 Февраля 2018, 01:44 | Сообщение # 2
участник
Сейчас нет на сайте
XJIE6yIIIEK, хахахахахахаха, как же я это обожаю, чем ты руководствовался, когда писал данный код? xD
Перевожу на русский:
Код

ракете присваевается ссылка на клоннированный объект той ракеты которой ты присваеваешь ссылку на клоннированный объект той ракеты которой ...


Сообщение отредактировал roma3fon - Пятница, 23 Февраля 2018, 01:45
FlyOfFlyДата: Пятница, 23 Февраля 2018, 02:18 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Цитата XJIE6yIIIEK ()

При выполнении данного куска кода Unity зависает намертво.
При этом, если записывать код таким образом:

чем генрики не угодили?
Код
rocket = Instantiate<GameObject>(rocket, transform.position, transform.rotation)
XJIE6yIIIEKДата: Пятница, 23 Февраля 2018, 02:18 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата roma3fon ()
хахахахахахаха

Смешно. Изначально я закидываю префаб ракеты в переменную GameObject. Далее мне нужно создать эту ракету. После создания ракеты, мне нужно вызвать у неё определённый метод.
Если я создаю просто через Instantiate
Код

...
Instantiate (rocket, transform.position, transform.rotation);
...

То он пишет ошибку NullReferenceException, и метод не выполняется.
Если я создаю объект таким образом:
Код

...
rocket = Instantiate (rocket, transform.position, transform.rotation) as GameObject;
...

То Unity виснет.

P.S. Когда писал код, руководствовался документацией по Unity.


Занимайся только тем, что любишь, и этим ты добъёшься большего.
FlyOfFlyДата: Пятница, 23 Февраля 2018, 02:23 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Цитата XJIE6yIIIEK ()
NullReferenceException

ЭЭЭ, это значит что rocket не существует, может она у тебя удаляется перед созданием или ей присваивается нулевой адрес перед использованием
XJIE6yIIIEKДата: Пятница, 23 Февраля 2018, 10:10 | Сообщение # 6
был не раз
Сейчас нет на сайте
Тему можно закрывать. Забыл поставить yield return null в корутине движения ракеты. В 5 ночи такое сложно заметить.

P.S. Если просто Instantiate использовал, то выскакивала ошибка UnassignedReferenceException, когда обращался к ГО ракеты.


Занимайся только тем, что любишь, и этим ты добъёшься большего.
  • Страница 1 из 1
  • 1
Поиск:

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