我是虚幻新手。我尝试按照教程进行 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 没有返回类型
我猜你不能在UE4中以这种方式创建带参数的构造函数。尝试定义一个默认构造函数。 如果您确实需要向其传递参数 - 请在此处检查 ObjectInitializer 构造函数:https://ikrima.dev/ue4guide/engine-programming/uobjects/new-uobject-allocation-flow/
欢迎使用虚幻引擎! :)
因此,您提供的代码会收到错误的原因有两个,第一个是构造函数名称中的一个简单拼写错误(
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的编码标准文档,以熟悉类型名称、变量名称等的适当约定。