在Unreal Engine中如何模拟按键输入?以Left Alt自动触发为例
UE4模拟按键输入(含Left Alt)实现方案
UE4原生蓝图没有提供直接模拟按键输入的节点,可通过以下两种方案实现需求:
方案1:C++扩展暴露蓝图节点(最稳定,适配所有按键场景)
该方案仅需要编写少量C++代码,编译后即可直接在蓝图中调用,步骤如下:
- 若你的项目是纯蓝图项目,先点击顶部菜单栏
文件 -> 新建C++类,选择任意父类(如Actor)完成创建,等待项目自动重启开启C++支持 - 新建
Blueprint Function Library类型的C++类,命名为InputFuncLib - 替换对应头文件和实现文件的代码:
// InputFuncLib.h #pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "InputFuncLib.generated.h" UCLASS() class 你的项目名_API UInputFuncLib : public UBlueprintFunctionLibrary { GENERATED_BODY() public: // 模拟按键按下 UFUNCTION(BlueprintCallable, Category = "CustomInput") static void SimulateKeyPress(APlayerController* PlayerController, FKey Key); // 模拟按键松开 UFUNCTION(BlueprintCallable, Category = "CustomInput") static void SimulateKeyRelease(APlayerController* PlayerController, FKey Key); };
// InputFuncLib.cpp #include "InputFuncLib.h" #include "GameFramework/PlayerController.h" void UInputFuncLib::SimulateKeyPress(APlayerController* PlayerController, FKey Key) { if (IsValid(PlayerController) && PlayerController->IsLocalController()) { PlayerController->InputKey(Key, IE_Pressed, 1.0f, false); } } void UInputFuncLib::SimulateKeyRelease(APlayerController* PlayerController, FKey Key) { if (IsValid(PlayerController) && PlayerController->IsLocalController()) { PlayerController->InputKey(Key, IE_Released, 1.0f, false); } }
- 编译代码后打开蓝图,即可搜索到
SimulateKeyPress和SimulateKeyRelease两个节点,传入玩家控制器、选择按键为Left Alt即可触发对应输入,注意按下后必须调用松开节点,否则按键会一直保持按下状态。
方案2:无C++变通方案
如果你的需求仅为触发Left Alt绑定的游戏逻辑,不需要真实模拟系统级按键输入,可以直接调用Left Alt输入事件绑定的自定义事件/函数,绕开按键模拟步骤即可实现相同效果。
注意事项
- 模拟按键仅对本地玩家控制器生效,联网模式下服务器端无法触发客户端的按键输入
- 该方法仅对游戏内自定义的输入绑定生效,无法触发UE编辑器默认快捷键
- 如需模拟组合键,按顺序调用对应按键的按下接口,再反序调用松开接口即可
内容的提问来源于stack exchange,提问作者Dimitrios Ververidis
相关产品推荐
相关产品推荐

