在Unity中制作脚本到Unreal

问题描述 投票:0回答:2

我是虚幻新手。我尝试按照教程进行 A* 寻路: https://www.youtube.com/watch?v=nhiFx28e7JY&t=1252s&ab_channel=SebastianLague

我真的不知道如何将Unity中制作的脚本更改为Unreal。

Unity脚本

public class Node {
    
    public bool walkable;
    public Vector3 worldPosition;
    
    public Node(bool _walkable, Vector3 _worldPos) {
        walkable = _walkable;
        worldPosition = _worldPos;
    }
}

我的虚幻脚本:

USTRUCT(BlueprintType)
struct FAS_Node
{
    GENERATED_USTRUCT_BODY()

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

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

    Node(bool _walkable, FVector _worldPos){
        walkable = _walkable;
        worldPosition = _worldPos;
    }
};

它返回错误,指出 Node 没有返回类型

c++ unreal-engine4
2个回答
0
投票

我猜你不能在UE4中以这种方式创建带参数的构造函数。尝试定义一个默认构造函数。 如果您确实需要向其传递参数 - 请在此处检查 ObjectInitializer 构造函数:https://ikrima.dev/ue4guide/engine-programming/uobjects/new-uobject-allocation-flow/


0
投票

欢迎使用虚幻引擎! :)

因此,您提供的代码会收到错误的原因有两个,第一个是构造函数名称中的一个简单拼写错误(

Node
而不是
FAS_Node
),修复后您还会收到一个错误(据我所知请参阅您对另一位评论者的回复)因为您只定义了一个参数化构造函数,所以所有
USTRUCT()
的结构都需要有一个默认构造函数(未使用提供的默认值进行参数化的构造函数),下面是代码应该做的看起来这些错误已修复。

USTRUCT(BlueprintType)
struct FAS_Node
{
    GENERATED_BODY()

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

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

    FAS_Node(bool _walkable, FVector _worldPos){
        walkable = false;
        worldPosition = FVector::ZeroVector;
    }

    FAS_Node(bool _walkable, FVector _worldPos){
        walkable = _walkable;
        worldPosition = _worldPos;
    }
};

P.S:这与您的问题没有直接关系,但我建议您阅读Unreal的编码标准文档,以熟悉类型名称、变量名称等的适当约定。

© www.soinside.com 2019 - 2024. All rights reserved.