朋友!
这实际上是一个很好的问题,所以让我试着把事情弄清楚。
如果你想简单地:当按下 W 时调用方法,那么任何解决方案都是正确的。但在现实世界中,这实际上永远不会发生。总会有一些“如果”在某个时候迫使你增加捕获 W 键的逻辑。这就是增强输入系统的用武之地。
所以,基本上增强输入系统不仅仅是一种处理硬件输入的“不同方式”。是处理硬件输入的方式。这是因为,虽然实现起来更复杂,但它已经准备好处理一系列不同的情况。我将尝试给出一些例子,如果你要使用直接捕获按键,
你必须学习如何解决这些例子:
增强输入系统可以区分输入类型:假设您的玩家可以按 E 键打开门,也可以按住 E 键砸门。实际上,没有增强输入系统,只有一种方法可以处理这种情况:您必须跟踪玩家按下给定键的所有后续帧,并根据按下的时间执行特定操作。如果您尝试在客户端/服务器类型的场景中想象这一点,您就会明白这有多么容易失败。嗯,增强输入系统不会出现这种情况。您只需进入输入操作编辑窗口,添加一个触发器以保持并定义触发操作之前的秒数。即使它应该只触发一次或应该受到时间膨胀的影响。我这么说并不是开玩笑,如果您想在蓝图中以某种方式手工构建类似的东西,可能需要几个月才能实现相同的结果。我不是在开玩笑。不仅如此,输入操作还可以轻松区分每个操作只应触发一次的操作和何时触发。而且它使用起来非常简单。
输入的不同时刻对应不同的事件:假设你需要玩家在按住 W 键的同时继续向前走。但是,你需要在玩家按下 W 键的第一帧和按下 W 键的最后一帧中触发特定的方法(比如说,处理触发动画)。我甚至不会开始解释如何使用直接按键捕获来处理这个问题,因为这不值得。但是,在增强输入系统中,你可以在输入的不同事件中为相同的操作定义不同的方法。例如,你有一个 Started 事件,它只会在按下键的第一帧中调用。或者 Completed 事件,它将在最后一帧触发。属于相同输入操作的每个事件都可以绑定到脚本中的不同方法。完全消除了任何逻辑来评估你正在接收的事件类型的必要性。
朋友!
这实际上是一个很好的问题,所以让我试着把事情弄清楚。
如果你想简单地:当按下 W 时调用方法,那么任何解决方案都是正确的。但在现实世界中,这实际上永远不会发生。总会有一些“如果”在某个时候迫使你增加捕获 W 键的逻辑。这就是增强输入系统的用武之地。
所以,基本上增强输入系统不仅仅是一种处理硬件输入的“不同方式”。是处理硬件输入的方式。这是因为,虽然实现起来更复杂,但它已经准备好处理一系列不同的情况。我将尝试给出一些例子,如果你要使用直接捕获按键,
你必须学习如何解决这些例子:
IMC->UnmapKey() / IMC->MapKey()
。Jump
在玩家按下空格键时执行 ,但如果他在水下,他需要Swim Up
。您可以跟踪游戏中的所有不同玩家状态,并为每个键和每个状态定义不同的逻辑,或者您可以只切换映射输入。如果您只是切换映射输入(或巧妙地处理它们的优先级),则根本不需要任何新逻辑。只需将每个玩家状态绑定到输入映射上下文(如果需要),当玩家改变状态时,它会改变映射。很简单。老实说,我可以继续说下去,但我想我已经说清楚了,而且我也在制作一个关于此的 Youtube 视频,我不想在这里把一切都破坏掉。xD
无论如何,我希望我能帮上忙,相信我,增强输入系统才是王道。