创建UBTService子类时出现未解析外部符号错误,求解决方案
解决UBTService子类编译未解析外部符号问题
添加AIModule依赖:打开项目对应模块的
.Build.cs文件,在PublicDependencyModuleNames或PrivateDependencyModuleNames数组中加入"AIModule",示例代码:PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "AIModule" });校验类的声明与实现:
- 头文件中确保类正确继承
UBTService并包含GENERATED_BODY()宏,示例:UCLASS() class YOURPROJECT_API UMyBTService : public UBTService { GENERATED_BODY() public: UMyBTService(); virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override; }; - 源文件中正确实现构造函数和重写方法,构造函数需调用父类逻辑,示例:
UMyBTService::UMyBTService() { NodeName = TEXT("Custom BT Service"); } void UMyBTService::TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) { Super::TickNode(OwnerComp, NodeMemory, DeltaSeconds); // 自定义业务逻辑 }
- 头文件中确保类正确继承
清理重建项目:
- 关闭Unreal Editor和IDE,删除项目目录下的
Binaries、Intermediate、Saved文件夹 - 右键项目
.uproject文件,选择Generate Visual Studio Project Files(针对VS环境) - 重新打开IDE,执行清理解决方案操作后重新编译
- 关闭Unreal Editor和IDE,删除项目目录下的
适配UE版本:确认重写的BTService方法签名与当前使用的UE版本匹配,部分版本中API存在细微调整,比如
TickNode的参数格式。
内容的提问来源于stack exchange,提问作者Alejandro
相关产品推荐
相关产品推荐

