You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Unity的A*寻路Node脚本迁移到Unreal时出现构造函数报错如何解决?

问题原因

你遇到的报错核心是构造函数命名和结构体名称不匹配:

  • C++要求类/结构体的构造函数名称必须和自身类型名称完全一致,你定义的UE结构体名称是FAS_Node,但写的构造函数名称是Node
  • 编译器会把名称不符的Node()识别为普通成员函数,普通函数必须声明返回类型,因此触发了「Node没有返回类型」的报错

解决步骤

  1. 将构造函数的名称修改为和结构体完全一致的FAS_Node
  2. 补充UE结构体要求的无参默认构造函数,避免虚幻头文件工具编译报错
  3. 可选:给属性添加默认初始化值,避免出现未初始化的野值

修改后的正确代码

USTRUCT(BlueprintType)
struct FAS_Node
{
    GENERATED_USTRUCT_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Nodes")
    FVector worldPosition = FVector::ZeroVector;

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Nodes")
    bool walkable = false;

    // UE USTRUCT要求的无参默认构造函数
    FAS_Node() = default;

    // 对应Unity版本的带参构造函数
    FAS_Node(bool _walkable, FVector _worldPos)
    {
        walkable = _walkable;
        worldPosition = _worldPos;
    }
};

额外注意点

  • 如果使用UE5及以上版本,可以把GENERATED_USTRUCT_BODY()替换为GENERATED_BODY(),后者是新版UE推荐的通用写法
  • 如果你不需要在蓝图中操作这个结构体,可以去掉BlueprintType、BlueprintReadWrite等宏,仅保留C++层面的逻辑即可

内容的提问来源于stack exchange,提问作者KHAIRUL AZANNI AMRAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:27:03