• 11c++呵呵老师【TSubobclass生成物体】


     TSubclassOf 是提供 UClass 类型安全性的模板类。

    创建一个actor

    ====================

    我们想自动生成很多漂浮物

    1.首先在头文件里声明一下这个漂浮物类型

    class AFloatingActor;

    2.增加一个变量,来告知程序要生成那种类型的actor 

    1. //告知程序要生成哪个类型的actor
    2. UPROPERTY(EditDefaultsOnly, Category = "Projectile")
    3. TSubclassOf floatingActor;

    3.在对应的源文件里引入头文件

    1. #include "Engine/EngineTypes.h"
    2. #include "FPSGame/FloatingActor.h"

     4.在对应源文件里的每帧事件的函数,编写生成代码

    1. void ASpwanActor::Tick(float DeltaTime)
    2. {
    3. Super::Tick(DeltaTime);
    4. UWorld * const world = GetWorld();
    5. if (world)
    6. {
    7. //生成的位置
    8. FVector SpwanActorLocation = GetActorLocation();
    9. FRotator SpwanActorRotation = GetActorRotation();
    10. //生成的规则
    11. FActorSpawnParameters ActorParameters;
    12. ActorParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
    13. //根据 参数来生成actor
    14. world->SpawnActor(floatingActor , SpwanActorLocation, SpwanActorRotation);
    15. }
    16. }

    =============================

    创建漂浮物和生成物的c++类的蓝图

    进入生成物的蓝图

     

     我们发现模板类告知编辑器的属性窗口只列出派生自 FloatingActor的类(作为属性选择)

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

     

     发现场景中有很多actor

    ==================================================

    如果我们想定时生成

    1. 在SpwanActor.h头文件里面,声明 一个基础时间的变量,和一个间隔时间变量。

    float BaseTime;

    2.在源文件中的tick函数中,我们做如下操作:

    1. void ASpwanActor::Tick(float DeltaTime)
    2. {
    3. Super::Tick(DeltaTime);
    4. float JiangeTime = 6.0f;
    5. BaseTime -= DeltaTime;
    6. if (BaseTime <= 0.0f)
    7. {
    8. BaseTime += JiangeTime;
    9. UWorld * const world = GetWorld();
    10. if (world)
    11. {
    12. //生成的位置
    13. FVector SpwanActorLocation = GetActorLocation();
    14. FRotator SpwanActorRotation = GetActorRotation();
    15. //生成的规则
    16. FActorSpawnParameters ActorParameters;
    17. ActorParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
    18. //根据 参数来生成actor
    19. world->SpawnActor(floatingActor, SpwanActorLocation, SpwanActorRotation);
    20. }
    21. }
    22. }

    3.测试成功

  • 相关阅读:
    Spring 中 Bean 对象的存储和取出
    CompletableFuture 异常与事务【无标题】
    有偿找IRT项目反应原理模型的朋友解答
    fatal: bad boolean config value ‘“false”‘ for ‘http.sslverify
    【Java】抽象类和接口的区别
    淘客返利平台的跨平台开发实践
    JS数据算法
    小程序支付升级:实现微信支付V3接口接入
    21 | 多线程3
    Tensorboard入门使用及显示空白/乱码/没有数据的问题
  • 原文地址:https://blog.csdn.net/zhang2362167998/article/details/126641114