Почему & ldquo; Cast to BP_Ladder & rdquo; все время терпеть неудачу?

ПРИМЕЧАНИЕ. Если вы работаете с браузером HTML5, вы должны проигнорировать этот ответ. Теперь это возможно, как видно из других ответов.

Невозможно изменить URL в браузере без перезагрузки страницы. URL-адрес представляет собой последнюю загруженную страницу. Если вы измените его (document.location), он перезагрузит страницу.

По одной очевидной причине вы пишете сайт на www.mysite.com, который выглядит как страница входа в систему банка. Затем вы меняете строку url браузера, чтобы сказать www.mybank.com. Пользователь полностью не осознает, что они действительно смотрят на www.mysite.com.

0
задан Baksteen-13 18 January 2019 в 15:05
поделиться

2 ответа

On Begin Overlap срабатывает только тогда, когда вы начинаете перекрытие, поэтому если у вас есть какая-то логика, которая устанавливает ваше «может взобраться» на false, вам нужно будет выйти за пределы коллайдера и снова вернуться в него для другого события Begin Overlap.

0
ответ дан Big Meanie 18 January 2019 в 15:05
поделиться

Понимание приведений

В простейшей форме, если ваш Actor может быть приведен к BP_Ladder, он вернет приведенный объект на выходной вывод.

Просто чтобы убедиться, что вы знаете, как работает приведение, я должен указать, что вы не можете приводить данный тип к какому-либо не связанному произвольному типу; он должен быть «кастуемым» к месту назначения. Так что, если вы думаете, что объект Actor, возвращаемый вашим перекрытием, действительно является классом BP_Ladder или проектом, который унаследован от BP_Ladder, то вы должны быть в порядке. Но это должно быть так; в противном случае он будет терпеть неудачу каждый раз.

https://docs.unrealengine.com/en-us/Engine/Blueprints/UserGuide/CastNodes

Извините, если я покровительствую, но если актерский состав не ' t работает 9/10, он не был использован правильно.


Отладка

Хорошо, что, если вы думаете, что вы действительно приводите правильный тип, и он все еще не работает, вам нужно будет отладить проект с целью найти, какой тип передается узлу приведения, что приводит к сбою.

  • Выберите объект в вашем проекте.
  • Нажмите F9 , чтобы создать точку останова; красный кружок должен появиться в левом верхнем углу вашего поля каста
  • Запустите вашу игру в режиме PIE (Combo рядом с игрой, Новое окно редактора (PIE) )
  • Поместите игру в сценарий, где ваш бросок сработает (я полагаю, коснитесь лестницы)
  • Точка останова должна сработать; Ваше игровое окно станет серым, и вы увидите большую красную стрелку, направленную вниз к вашему литейному боксу, где вы установили точку останова
  • Наведите указатель мыши на Object на входной стороне литейного бокса. Он должен показывать альтернативный текст, содержащий подробную информацию о переменной.
  • Внутри альтернативного текстового поля найдите Текущее значение ; это должно показать вам текущий тип объекта, который вы собираетесь использовать. Вы должны убедиться, что это значение соответствует ожидаемому.

https://docs.unrealengine.com/en-US/Engine/Blueprints/UserGuide/Debugging

Пример

[ 1132] Я сделал скриншот рабочей игры; в этом вы увидите:

  • a Точка останова (красный круг) показана на узле функции (поле)
  • на узле выполнения (красная стрелка) - Create Rolling Stock
  • Текущее значение переменной - DepotComponent...Depot

Example Blueprint breakpoint triggered ]

<час>

Заключительные мысли

Есть несколько ошибок при использовании чертежей; одним из них в этом случае может быть то, что у вас может быть два класса с одинаковыми именами (хотя они могут иметь разные внутренние «имена сценариев» - фактически полный путь). Когда вы отлаживаете переменную объекта, убедитесь, что вы соответствуете всему пути к местоположению вашего ресурса в вашей папке содержимого; это гарантирует, что вы действительно пытаетесь привести к объекту, который, по вашему мнению, действительно есть.

Еще одна классическая проблема - «горячие перезагрузки». Иногда редактору необходимо перезагрузить модуль после сборки на лету, но конфликт классов происходит внутри; это приводит к тому, что новая версия класса получает другое имя (с префиксом HOTRELOADED). Остерегайтесь этого; это может привести к тому, что вы будете иметь дело с двумя различными типами при касте, и вы даже не поймете Настоящий здравомыслящий сапер. В случае сомнений закройте и снова откройте редактор; это исправляет это каждый раз.

0
ответ дан Rab 18 January 2019 в 15:05
поделиться