UE 在C++中生成一个基于蓝图的Actor

简介

        在UE4游戏场景中看到的所有对象皆是Actor,而Actor复杂的功能是由许多不同的Component共同实现的。Actor是Object的基类,它是一个可以放置或生成在世界中的对象。

        当我们想要在场景中创建一个物体时,先要创建一个继承于Actor的C++类,再基于该C++类创建蓝图类,然后只要把这个蓝图拖进场景中就可以了。那我们如果想要使用代码在场景中批量生成已经创建好的蓝图,也就是动态创建该怎么办呢?


代码实现

        首先在头文件中声明要创建的蓝图类的对象,使用 TSubclassOf 限定变量的类型只能是要创建的蓝图类或者该蓝图类的子类:

TSubclassOf<YourClass> BlueprintVar;        // YourClass是蓝图使用的基类

        然后需要在构造函数中给变量赋值,使用 FClassFinder 找到该蓝图类,要使用 FClassFinder 函数需要包含头文件 "UObject/ConstructorHelpers.h":

// TEXT里面是要创建的蓝图的路径
static ConstructorHelpers::FClassFinder<YourClass> UBlueprint(TEXT("/Game/Blueprints/BlueprintName"));
BlueprintVar = UBlueprint.Class;

        最后使用 SpawnActor() 在场景中生成蓝图的对象,这段代码不可以放在构造函数中,可以把它放在 BeginPlay() 中,或者写在另外的函数中,在想要生成该蓝图对象的时候调用:

FActorSpawnParameters Params;
Params.Owner = this;
GetWorld()->SpawnActor<YourClass>(BlueprintVar, GetActorLocation(), FRotator::ZeroRotator, Params);

        这里说一下 SpawnActor 的每个参数的意思,第一个参数是前面我们声明并赋值的蓝图类的对象,第二个参数是生成的蓝图的位置坐标,这里的 GetActorLocation() 是获取当前类的当前位置,第三个参数是生成的蓝图的旋转角度,这里的 FRotator::ZeroRotator 是不旋转,第四个参数是生成的蓝图对象的拥有者是谁,它是一个默认参数,不填的时候默认没有拥有者。这个参数的类型是 FActorSpawnParameters 的结构体类型,这里是指定当前类为生成的蓝图对象的拥有者。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下代码在UE5生成一个Actor并设置相机位置: ```c++ // 获取世界指针 UWorld* World = GetWorld(); // 创建Actor AActor* NewActor = World->SpawnActor<AActor>(); // 设置Actor位置 NewActor->SetActorLocation(CameraLocation); ``` 其,CameraLocation是相机的位置。 ### 回答2: 在UE5,要运行相机位置生成一个Actor,我们可以按照以下步骤操作: 首先,我们需要在场景放置一个Camera Actor以作为相机的位置。可以通过在“Modes”面板选择“Basic”并拖拽“Camera Actor”到场景来实现。 然后,选择Camera Actor并在“Details”面板调整其位置和方向。可以通过手动输入或直接拖动来调整其位置,确保相机的位置和角度与我们想要生成Actor的位置和方向一致。 接下来,我们需要创建一个新的Actor蓝图。在“Content Browser”面板右键点击并选择“创建蓝图类”,选择“Actor”作为父类。 打开新创建的Actor蓝图,并在蓝图编辑器添加所需的组件和逻辑。根据需要可以添加静态网格、碰撞体、动画或其他组件,以及事件或脚本来处理相机位置生成Actor后的行为。 接下来,在Actor蓝图添加一个变量以保存相机位置。对于位置向量变量,我们可以在蓝图编辑器的右上角的“Variables”面板点击“+”按钮,并选择“Vector”作为变量类型。然后命名变量并将其默认值设置为Camera Actor的位置。 最后,我们需要在场景放置生成Actor的触发器。可以通过在“Modes”面板选择“Basic”并拖拽“Trigger Volume”到场景来实现。将触发器调整到适当的大小和位置,确保覆盖到我们想要生成Actor的区域。 在触发器的事件脚本,我们可以添加一个事件来生成Actor。选择触发器,然后在“Details”面板选择“+”按钮以添加一个事件。选择生成Actor蓝图,并将其放置在所需位置。 通过以上步骤,我们可以在UE5使用相机位置来生成一个Actor,并对其进行进一步的定制和处理。 ### 回答3: UE5是指虚幻引擎5,而在虚幻引擎生成一个Actor是非常常见和重要的操作。下面是使用UE5运行相机位置生成一个Actor的简要步骤。 首先,我们需要在虚幻引擎的蓝图编辑器创建一个新的蓝图类作为我们要生成Actor的模板。可以命名为"MyActor"(或其他你喜欢的名称)。在该蓝图,我们可以定义该Actor的外观、功能等。 接下来,在虚幻引擎创建一个相机,并将其放置在场景的某个位置。可以通过拖拽一个"CameraActor"到场景来创建相机。 在蓝图编辑器,打开"MyActor"的蓝图类。在该蓝图类的事件图表,可以选择合适的位置添加一个节点(例如,右键单击节点面板,搜索并选择"CreateActorFromClass"节点)。 连接该节点的输入引脚到相机的位置(可以使用合适的节点来获取相机的位置,例如"GetActorLocation"等节点)。然后,将该节点的"Class"引脚连接到"MyActor"的蓝图类上。 最后,在虚幻引擎的世界,找到你放置相机的位置,双击打开该位置,并使其运行。此时,相机位置所生成的"MyActor"将在该位置呈现。 通过上述步骤,我们可以在虚幻引擎使用UE5运行相机位置生成一个Actor。当然,根据具体需求,我们还可以对生成Actor进行更多的定制和功能实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值