Как создать Редактора Формы WPF? [закрытый]

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

В простейшей форме, если ваш 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). Остерегайтесь этого; это может привести к тому, что вы будете иметь дело с двумя различными типами при касте, и вы даже не поймете Настоящий здравомыслящий сапер. В случае сомнений закройте и снова откройте редактор; это исправляет это каждый раз.

8
задан Pop Catalin 28 October 2008 в 18:06
поделиться

2 ответа

Мне также понравилась статья WPF DrawTools о CodeProject, в которой очень хорошо отформатирован набор исходных классов. В ней приведен более простой пример контурных фигур - эллипс, прямоугольник, линия, полилиния и текст. К сожалению, она была удалена в 2015 году, как кто-то мне только что указал.

Копия статьи доступна через Wayback Machine, но связанный с ней исходный код был удален вместе с оригинальной статьей. Статья содержит диаграммы классов и достаточно подробную информацию, чтобы дать вам хорошее представление об общем дизайне.

Сейчас я думаю, что стоит взглянуть на Kimono Designer, хотя, похоже, что это было объявлено с большим волнением, и код code не обновлялся уже год. Обратите внимание, что есть порт WPF, как обсуждалось в этой статье и на примере GitHub.

.
1
ответ дан 5 December 2019 в 10:44
поделиться