Actor的创建分为两种,最简单的方式就是在场景中编辑拖拽(静态创建)。 第二种可以通过编码动态进行生成(动态创建),动态生成的Actor会持有有效的操作指针。 SpawnActor函数 UWorld 蓝图中SpawnActorOfClass 在C++中,我们需要通过UWorld指针进行创建。 在UWorld类中,我们可以找到多个生成Actor的函数。 对于重载函数,我们...
/** Templated version of SpawnActor that allows you to specify a class type via the template type*///(泛型编程)由于 C++ 是编译型语言,在编译前必须确定好类型,//定义一个还不确定具体类型的 T类型,调用时需使用尖括号来确定<具体类型>template<classT >T* SpawnActor(constFActorSpawnParameters& Spawn...
voidAMyTest::BeginPlay(){Super::BeginPlay();// 增加子Actorif(ActorC!=nullptr){FTransform Transform=UKismetMathLibrary::MakeTransform(FVector(0.0,0.0,0.0),FRotator(0.0,0.0,0.0),FVector(1.0,1.0,1.0));UActorComponent*AC=AddComponentByClass(UChildActorComponent::StaticClass(),false,TF,false);AC...
voidAMyTest::BeginPlay(){Super::BeginPlay();// 增加子Actorif(ActorC!=nullptr){FTransform Transform=UKismetMathLibrary::MakeTransform(FVector(0.0,0.0,0.0),FRotator(0.0,0.0,0.0),FVector(1.0,1.0,1.0));UActorComponent*AC=AddComponentByClass(UChildActorComponent::StaticClass(),false,TF,false);AC...
ue这里面,蓝图和cpp是两套运行顺序逻辑。首先是构造函数,cpp的构造函数是优于一切的,而蓝图的伪构造,其实是创建实例。BluePrintClass就是类似Unity里面的Prefab,拖到场景中才会创建实例。 组件子Actor的构建,可以在构造函数中CreateDefaultSubobject <ChildActorComponent>进行;但是这个组件只是一个胶水,在蓝图里静态存在...
接着创建我们的游戏模式,新建蓝图资源,选择TowerDefenseGameModeBase,将蓝图资源命名为BP_TowerDefenseGameMode: 在Game关卡的WorldSettings中配置创建的游戏模式: 1.1 游戏板 游戏板是游戏中最重要的部分,因此我们在本教程中先创建它。 游戏板是一个带有GameBoard组件的actor对象。我们创建GameBoard组件,继承自ActorComponen...
创建流程:1.编辑器中的 Actor 被复制到新世界场景中 2.PostDuplicate 被调用 3.InitializeActorsForPlay:初始化Actor 4.为未初始化的 Actor 执行 RouteActorInitialize 5.初始化组件:同上 6.BeginPlay - 关卡开始后调用 c.实例Actor 创建流程:1.SpawnActor 被调用 ...
接着,创建一个新的敌人类型,目前敌人类型只需要记录创建它的工厂就可以了: // Enemy.hUCLASS()classTOWERDEFENSE_APIAEnemy:publicAActor{GENERATED_BODY()public:// Sets default values for this actor'spropertiesAEnemy();public:voidSetOriginFactory(UEnemyFactory*InOriginFactory);FORCEINLINEUEnemyFactory*Get...
接上一节教程,在本教程中,我们将每帧都对一个 actor 进行旋转。创建一个新的 C++ Actor 类并将其命名为RotatingActor。在头文件中,我们将创建 3 个浮点变量。我们将把它们的UPROPERTY设置为EditAnywhere,这样我们就可以在编辑器中更改值,我们将把所有变量放在Movement类别中,以使它们在一起,并与其他属性分开。
查看/修改⼀个对象的时候,我们都是在编辑器中打开地图,然后选中地图中的⼀个actor,右侧就会⾃动出现该actor对应的属性列表。下⾯是⼀个选中⼀个Actor对象时创建对应更新属性对象的调⽤链。可以看到,当选中⼀个Actor对象时,对于该对象的属性遍历是⾃动进⾏。由于UE⽀持C++反射,所以给出⼀个...