UE5TSubclassOf模板,定时器的使用,SpawnActor函数的使用,SetStaticMesh函数的使用

1.TSubclassOf模板

TSubclassOf<T> subclass , 值存储某个类的子类类型不存储具体的对象

1.类型安全只接受T类型和T类型的子类类型

2.可以用于蓝图选择子类,使用UPROPERTY()宏可以将TSubclassOf暴露给蓝图

3.在C++和蓝图中都可以使用

4.TSubclassOf它就是封装的UClass的指针,当某个函数需要的参数是UClass*是可以使用TSubclassOf进行传递,

2.定时器

1.立即触发的定时器--语法 -- 这个定时器只执行一次,立即触发,不需要手动清除

cpp 复制代码
GetWorld()->GetTimerManager().SetTimerForNextTick(类指针, &类作用域::执行函数);

例如GetWorld()->GetTimerManager().SetTimerForNextTick(this, &AMyActor::MyFunction);

2.可以循环触发的定时器--语法 -- 需要定时器句柄

cpp 复制代码
句柄定义 FTimerHandle  handle;
cpp 复制代码
定时器实现
GetWorldTimerManager().SetTimer(handle, &class::function, 5.0f, true);

void SetTimer(
    FTimerHandle& InOutHandle,   // 定时器句柄
    UObject* Object,             // 目标对象
    FName FunctionName,          // 要执行的函数名
    float Time,                  // 触发时间(秒)
    bool bLooping = false,       // 是否循环
    float InitialStartDelay = 0.0f  // 初始延迟(可选)
);

3.定时器绑定处理函数的方式

3.1直接绑定,需要使用UFUNCTION()宏 , 支持蓝图调用 , 函数不能有参数

cpp 复制代码
// 头文件
FTimerHandle Handle;

UFUNCTION()
void function();

// 源文件
GetWorldTimerManager().SetTimer(Handle, this , &class::function, 5.0f, true);

3.2使用lambda表达式 , 不需要宏,不支持蓝图调用 , 函数可以有参数

cpp 复制代码
1.直接使用lambda
GetWorld()->GetTimerManager().SetTimer(TimerHandle, 
        [this](参数1 ,参数2 ...)
        {
            UE_LOG(LogTemp, Warning, TEXT("Lambda 定时器触发!"));
        }, 
        2.0f, true
);

2.使用FTimerDelegate
FTimerDelegate TimerDel = FTimerDelegate::CreateLambda([this, 参数1, 参数2 ,...]()
	{
		
		UE_LOG(LogTemp, Warning, TEXT("RandomLocation %s"), *RandomLocation.ToString());
	}
);

GetWorldTimerManager().SetTimer(SpawnTimerHandle, TimerDel, 5.0f, true);

3.SpawnActor

cpp 复制代码
AActor* UWorld::SpawnActor
	(
		UClass*			Class, // 生成的类的类型
		FVector const*	Location, // 生成的位置
		FRotator const*	Rotation, // 生成的旋转
        FActorSpawnParameters Params // 生成的参数
	)

struct FActorSpawnParameters
{
    UObject* Owner;                                  // Actor的所有者
    AActor* Instigator;                              // 产生该Actor的源,例如攻击者
    TSubclassOf<AActor> OverrideLevel;               // 如果需要,指定Actor的特定级别(Level)
    UWorld* OverrideWorld;                           // 如果需要,指定Actor生成的特定世界(World)
    FName Name;                                      // Actor的名称
    TArray<UActorComponent*> ComponentsToInitialize;  // 生成后需要初始化的组件
    bool bNoCollisionFail;                           // 如果为True,即使发生碰撞,也不会失败
    bool bDeferConstruction;                         // 如果为True,生成的Actor将会推迟构造,直到显式调用FinishSpawning()
    bool bAllowDuringConstructionScript;             // 是否允许在构造脚本中生成Actor
    bool bHideFromSceneOutliner;                     // 如果为True,生成的Actor将不会出现在场景大纲中
    bool bTemporary;                                 // 是否生成临时Actor,通常用于仅在运行时存在的对象
    bool bTransient;                                 // 是否是临时的,不会保留在序列化中
    bool bNoFail;                                    // 如果为True,生成Actor时不会因错误失败
    ESpawnActorCollisionHandlingMethod SpawnCollisionHandlingOverride; // 碰撞处理方式:如忽略、阻塞等
    FTransform SpawnTransform;                       // 生成时Actor的位置、旋转和缩放
};

// 模板是想要生成的类的类型,类的指针 ,生成位置,旋转 ,生成参数
GetWorld()->SpawnActor<classtype>(UClass, Location, Rotation , Params);
//例如 我想生成AActor
头文件定义
TSubclassOf<AActor> subclassof;
GetWorld()->SpawnActor<AActor>(subclassof, Location, Rotation , Params);

4.SetStaticMesh

给生成的AActor设置静态网格体

cpp 复制代码
// 参数是静态网格体的指针
UStaticMeshComponent::SetStaticMesh(UStaticMesh* staticmesh)
相关推荐
AA陈超14 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
ricky6757 天前
[Linux]Linux系统的20个实用命令详解
ue5
AA陈超8 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-01.创建游戏玩法标签
c++·游戏·ue5·游戏引擎·虚幻
reddingtons9 天前
场景美术师的“无限画板”:UE5中非破坏性的材质混合(Material Blending)工作流
ue5·材质·设计师·技术美术·游戏策划·游戏美术·substance
m0_552200829 天前
《UE5_C++多人TPS完整教程》学习笔记61 ——《P62 武器开火特效(Fire Weapon Effects)》
c++·游戏·ue5
努力的小钟9 天前
UE5 GAS GameAbility源码解析 EndAbility
ue5
AA陈超9 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-04 使用效果应用游戏标签
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji9 天前
UE5 测量 -1,长度测量:P2制作定位球与定位线,P3制作射线检测节点,P4在鼠标位置生成定位球
ue5
AA陈超11 天前
虚幻引擎UE5专用服务器游戏开发-33 在上半身播放组合蒙太奇
c++·游戏·ue5·游戏引擎·虚幻
zhangzhangkeji11 天前
cesium126,230130,Editing Tileset Materials - 0,编辑瓦片集材质,官方教程:
ue5