阿赵UE引擎C++编程学习笔记——生成Actor

作者 : admin 本文共1048个字,预计阅读时间需要3分钟 发布时间: 2024-06-4 共3人阅读

  大家好,我是阿赵。
  使用Unity引擎的朋友应该都知道,Unity引擎的预设资源叫做Prefab,然后把预设资源生成在场景的命令是:GameObject.Instantiate。UE引擎里面,并没有统一的Prefab类型,而是通过各种蓝图来编辑这些预先编辑的资源,然后Actor有点类似于Unity引擎的GameObject,所有能生成在场景上的对象,都继承Actor。
  所以这里来看看怎样在场景上面生成预先编辑好的蓝图资源作为Actor使用。
  这里为了举例,我新建一个Actor蓝图,命名为TestBallBP
阿赵UE引擎C++编程学习笔记——生成Actor插图

  它存放的路径是:/Game/BP/TestBallBP

一、 蓝图方式生成

  在蓝图里面,有专门生成actor的节点。创建一个SpawnActor的节点,然后在Class里面,搜索刚才创建的TestBallBP:
阿赵UE引擎C++编程学习笔记——生成Actor插图(1)

  由于这个节点需要一个操作出发,所以我用了一个键盘E键的事件来触发。但这时候,会发现节点编译不过,那是因为Spawn一个Actor,必须指定它的Transform,最低限度要指定它生成的坐标。
阿赵UE引擎C++编程学习笔记——生成Actor插图(2)

  在Spawn Transform拖动出连线
阿赵UE引擎C++编程学习笔记——生成Actor插图(3)

  可以指定一个坐标作为生成的点
阿赵UE引擎C++编程学习笔记——生成Actor插图(4)

  也可以通过MakeTransform指定位移旋转缩放。
阿赵UE引擎C++编程学习笔记——生成Actor插图(5)

  这个时候,蓝图应该能成功编译,在运行时按键盘E键,应该就能看到在场景的指定坐标生成了一个球了。

二、 C++方式生成

  C++生成Actor的API是GetWorld()->SpawnActor,使用的时候需要注意

1、 路径

  刚才的球存放的路径是:/Game/BP/TestBallBP
  但在代码里面调用,需要这样修改一下路径:/Game/BP/TestBallBP.TestBallBP_C
  具体就是在后面加一个文件名加_C的后缀

2、 蓝图的类型

  通过LoadClass,可以加载指定路径的一个蓝图的类,不过由于它们都继承了Actor,所以都用AActor来获取也是可以的。
  代码示例:

FString path = TEXT("/Game/BP/TestBallBP.TestBallBP_C");
UClass* bpVar = LoadClass<AActor>(nullptr, *path);
if (bpVar != nullptr)
{
	AActor* spawnActor = GetWorld()->SpawnActor<AActor>(bpVar);
	spawnActor->SetActorLocation(FVector(0, 0, 0));
}
本站无任何商业行为
个人在线分享 » 阿赵UE引擎C++编程学习笔记——生成Actor
E-->