TSubclassOf 是提供 UClass 类型安全性的模板类。
创建一个actor


====================
我们想自动生成很多漂浮物
1.首先在头文件里声明一下这个漂浮物类型
class AFloatingActor;
2.增加一个变量,来告知程序要生成那种类型的actor
- //告知程序要生成哪个类型的actor
- UPROPERTY(EditDefaultsOnly, Category = "Projectile")
- TSubclassOf
floatingActor;
3.在对应的源文件里引入头文件
- #include "Engine/EngineTypes.h"
- #include "FPSGame/FloatingActor.h"
4.在对应源文件里的每帧事件的函数,编写生成代码
- void ASpwanActor::Tick(float DeltaTime)
- {
- Super::Tick(DeltaTime);
- UWorld * const world = GetWorld();
- if (world)
- {
- //生成的位置
- FVector SpwanActorLocation = GetActorLocation();
- FRotator SpwanActorRotation = GetActorRotation();
- //生成的规则
- FActorSpawnParameters ActorParameters;
- ActorParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
- //根据 参数来生成actor
- world->SpawnActor
(floatingActor , SpwanActorLocation, SpwanActorRotation); - }
-
- }
=============================
创建漂浮物和生成物的c++类的蓝图



进入生成物的蓝图

选择完毕后,将蓝图拖入场景开始测试


发现场景中有很多actor

==================================================
如果我们想定时生成
1. 在SpwanActor.h头文件里面,声明 一个基础时间的变量,和一个间隔时间变量。
float BaseTime;
2.在源文件中的tick函数中,我们做如下操作:
- void ASpwanActor::Tick(float DeltaTime)
- {
- Super::Tick(DeltaTime);
- float JiangeTime = 6.0f;
- BaseTime -= DeltaTime;
-
- if (BaseTime <= 0.0f)
- {
- BaseTime += JiangeTime;
- UWorld * const world = GetWorld();
- if (world)
- {
- //生成的位置
- FVector SpwanActorLocation = GetActorLocation();
- FRotator SpwanActorRotation = GetActorRotation();
- //生成的规则
- FActorSpawnParameters ActorParameters;
- ActorParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
- //根据 参数来生成actor
- world->SpawnActor
(floatingActor, SpwanActorLocation, SpwanActorRotation); - }
- }
- }
3.测试成功
