#c #unreal-engine4 #unreal-blueprint
Вопрос:
Итак, я создавал игру на движке Unreal Engine 4 и пытался использовать комбинацию C и чертежей. Все шло довольно гладко, но я занимался некоторым рефакторингом и решил вместо этого перенести функцию из моего класса оружия в чертеж. Функция, как показано ниже, берет ссылку на плеер, который она передает в функцию ShootRay, чтобы она знала, какого актера игнорировать с помощью raycast.
По какой-то причине, когда я попытался преобразовать функцию огнестрельного оружия в Чертеж, как показано ниже, луч попадает в плеер, несмотря на то, что я все еще передаю игрока в качестве Актера, которого нужно игнорировать.
Я не понимаю, почему это будет работать в C , но не в чертежах, но я предполагаю, что это как-то связано с вызовом функций чертежей из C , которые затем вызывают другие функции C , вызывая что-то странное. Мне бы очень хотелось, чтобы этот код был включен в схему, чтобы его было легко расширить позже. Кто-нибудь знает, что происходит?
Примечание: Я знаю, что на изображении чертежа указано пользовательское событие, но это только потому, что я сделал снимок экрана после возврата его обратно на C и удаления тега BlueprintImplementable.
Ответ №1:
Ну, оказывается, по какой-то причине переменная длины в функции ShootRay была переполнена в схеме, но не в коде C . Удаление нескольких нулей устранило проблему…
Ответ №2:
(Не могу прокомментировать ваш ответ, поэтому напишу его так)
Да, это огромное число (думаю, для работы достаточно просто удалить 1 ноль). Может быть, в C он не переполнится, потому что попадание произойдет до того, как оно достигнет максимального 32-битного значения? Заканчивается ли когда-нибудь трассировка линии, если вы стреляете в воздух из-за переполнения (когда вы делали это только на C )? Это вызвало у меня любопытство, проверю это просто для удовольствия!
Я думаю, что, поскольку чертежи работают немного по-другому, через сценарии, он проверит значение вашего поплавка до начала операции, но я могу быть совершенно неправ. Все еще очень новичок в программировании.
Рад, что вы нашли свою проблему! Желаю удачи!