Unreal 5.1使用EnhancedInputComponent时BindAction报错C2665的问题
问题原因分析
这个C2665错误的核心是函数参数类型不匹配:
UEnhancedInputComponent::BindAction要求绑定的回调函数参数为const FInputActionValue&(常量引用)- 你定义的
Move函数参数却是FInputActionValue&(非常量引用)
Unreal的Enhanced Input框架触发动作回调时,传递的是常量引用类型的输入值,你的函数签名无法接收该类型,导致编译器找不到匹配的重载版本,因此报错。
修复方法
只需将Move函数的参数改为常量引用即可:
声明部分修改:
void Move(const FInputActionValue& Value);
定义部分修改:
void ACryptRaiderCharacter::Move(const FInputActionValue& Value) { const float DirectionValue = Value.Get<float>(); if (Controller && DirectionValue != 0.f) { FVector Forward = GetActorForwardVector(); AddMovementInput(Forward, DirectionValue); } }
修改后函数签名将与BindAction期望的回调类型匹配,编译器即可找到对应重载完成绑定。
内容的提问来源于stack exchange,提问作者zac
相关产品推荐
相关产品推荐

