ue4-自定义关卡类

继承关卡基类 ALevelScriptActor 去扩展,蓝图继承自己的自定义关卡类


  • MyLevel.h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #pragma once
    #include "MyLevel.generated.h"

    UCLASS()
    class AMyLevel : public ALevelScriptActor
    {
    GENERATED_BODY()
    public:
    AMyLevel();
    virtual ~AMyLevel();

    virtual void BeginPlay() override;
    virtual void Destroyed() override;

    public:
    UFUNCTION(BlueprintCallable, Category = "AMyLevel")
    FString GetLevelName() { return LevelName; }

    public:
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AMyLevel")
    FString LevelName;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "AMyLevel")
    int32 LevelCounter;
    };
  • MyLevel.cpp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include "MySkeleton.h"
    #include "MyLevel.h"

    AMyLevel::AMyLevel() : Super()
    {
    LevelName = "AMyLevel";
    LevelCounter = 123;
    }

    AMyLevel::~AMyLevel()
    {
    UE_LOG(LogMySkeleton, Warning, TEXT("--- AMyLevel::~AMyLevel"));
    }

    void AMyLevel::BeginPlay()
    {
    UE_LOG(LogMySkeleton, Warning, TEXT("--- AMyLevel::BeginPlay"));
    }

    void AMyLevel::Destroyed()
    {
    UE_LOG(LogMySkeleton, Warning, TEXT("--- AMyLevel::Destroyed"));
    }
  • 关卡蓝图中继承这个 自定义关卡类

    • 修改父类
      这里写图片描述

      这里写图片描述

    • 显示父类的变量
      这里写图片描述


相关api

  • 调用关卡中的事件
    1
    virtual bool RemoteEvent(FName EventName);
    • 从源码中可以看出,它是重当前 World 中的 所有Level 中查找 显示状态中的 且 事件参数为零的 事件,并执行它。
      1
      2
      3
      4
      5
      for( TArray<ULevel*>::TConstIterator it = GetWorld()->GetLevels().CreateConstIterator(); it; ++it )

      if( CurLevel && CurLevel->bIsVisible )

      if( EventTarget && EventTarget->NumParms == 0)

参考资料