为什么 "Cast to BP_Ladder" 总是失败?

Why is "Cast to BP_Ladder" failing all the time?

我的 Unreal Engine 4 项目有问题。我对此很陌生,我真的不明白发生了什么。我制作了梯子功能,因此角色可以爬上梯子并站在顶部的静态网格体上。但是当我想走下梯子时,我想触发 Actor "BP_Ladder" 上的 "Allow Down" 函数,但演员表每次都失败。是什么导致转换失败?

我环顾四周发现其他遇到施法失败问题的人大多名字有误,但我的梯子叫做 "BP_Ladder" 这就是我要施法的目的,这让我很困惑。

我的 BP_Dude 蓝图(每刻都被调用)

我的 BP_Ladder 蓝图(这就是我要触发的)

此功能的目标是关闭静态网格物体的碰撞,然后让我像往常一样沿着梯子向下移动。

我真的很感谢你的帮助,这是我使用 unreal engine 的头几天,我遵循的 Epic Games 教程没有显示所有的蓝图,所以每个人都半途而废,无助蓝图。

了解转换

在最简单的形式中,如果您的 Actor 可以转换为 BP_Ladder,那么它将 return 输出引脚上的转换对象。

为了确保您了解强制转换的工作原理,我必须指出您不能将给定类型强制转换为一些不相关的任意类型;它必须 "castable" 到施法目的地。所以如果你认为你的重叠 Actor 对象 return 确实是一个 BP_Ladder,或者是从 BP_Ladder 派生的蓝图 class,那么你应该没关系。但事实必须如此;否则每次都会失败。

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

抱歉,如果我在光顾,但如果 9 月 10 日演员没有工作,那就是没有正确使用。


调试

好吧,如果你认为你真正转换到正确的类型但它仍然失败,那么你需要使用 objective 来调试你的蓝图以找到正在转换的类型给导致失败的 cast 节点。

  • Select 蓝图中的施法对象。
  • F9创建断点;投射框的左上角应该会出现一个红色圆圈
  • 运行您的游戏处于 PIE 模式(Combo 接下来玩,New Editor Window(PIE)
  • 将游戏置于你的施法者会开火的场景中(我想是碰到了梯子)
  • 断点应该触发;你的游戏 window 会变成灰色,你会看到一个大的红色箭头指向你放置断点的投射框
  • 将鼠标悬停在投射框输入侧的 Object 引脚上。它应该显示包含变量详细信息的替代文本。
  • 在替代文本框中,查找当前值;这应该向您显示您将要投射的当前对象类型。您需要确保此值符合您的预期。

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

例子

我截取了正在运行的游戏的屏幕截图;在这里你会看到:

  • a 断点(红圈)显示在功能节点(方框)上
  • 执行节点(红色箭头)是Create Rolling Stock
  • 变量的当前值DepotComponent...Depot


最后的想法

使用蓝图时有几个陷阱;在这种情况下,其中之一可能是您可以有两个具有相同名称的 classes(尽管它们可能具有不同的内部 "script names" - 实际上是一个完全限定的路径)。调试对象变量时,请确保将整个路径与内容文件夹中资产的位置相匹配;这将确保您确实在尝试投射到您认为真实的对象。

另一个 classic 问题是 "hot reloads"。有时,编辑器需要在即时构建后重新加载模块,但内部会发生 class 冲突;这导致 class 的新版本获得不同的名称(以 HOTRELOADED 为前缀)。当心这个;它可能会导致您在投射时处理两种不同的类型,而您甚至没有意识到。一个真正的理智工兵。如有疑问,请关闭并重新打开编辑器;它每次都会修复它。

On Begin Overlap 只有在你开始重叠时才会触发,所以如果你有一些逻辑将你的 "can climb" 设置为 false 你将需要移出碰撞器并再次返回它以进行另一个开始重叠事件。