UE4 C++编译报错:EditAnywhere被识别为未知函数问题咨询
UE4 C++ EditAnywhere使用要求及报错解决方案
报错原因
你出现编译错误的核心原因是错误将EditAnywhere元标记用在了UFUNCTION()宏上,EditAnywhere是专门用于成员变量的属性标记,不支持修饰函数。
EditAnywhere 正式使用要求
- 仅可作用于
UPROPERTY()修饰的类成员变量,禁止用于UFUNCTION()、UCLASS()、USTRUCT()等其他UE反射宏的参数 - 修饰的变量所属的类必须是UObject的派生类(如AActor、APawn、ACharacter等UE原生基类的子类),且类声明上方必须添加
UCLASS()宏开启UE反射机制 - 类对应的头文件必须在所有#include语句的最后一行,引入该类自动生成的
.generated.h头文件,否则UE反射系统无法识别包括EditAnywhere在内的所有元标记
函数的替代标记方案
如果你需要让Dash这类函数支持编辑器/蓝图相关操作,使用UFUNCTION专属标记即可:
- 要让函数可以在蓝图中主动调用:使用
BlueprintCallable标记 - 要让函数可以在蓝图中被重载实现:使用
BlueprintNativeEvent或BlueprintImplementableEvent标记
错误代码修改示例
原错误写法:
UFUNCTION(EditAnywhere) void Dash();
修改后(蓝图可调用为例):
UFUNCTION(BlueprintCallable, Category = "Player Movement") void Dash();
内容的提问来源于stack exchange,提问作者Technika číslo 1 s.r.o
相关产品推荐
相关产品推荐

