ue4-自定义关卡类

来源:互联网 发布:js 阻止标签跳转 编辑:程序博客网 时间:2024/05/21 22:56

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


  • MyLevel.h

    #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

    #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

  • 调用关卡中的事件

        virtual bool RemoteEvent(FName EventName);
    • 从源码中可以看出,它是重当前 World 中的 所有Level 中查找 显示状态中的 且 事件参数为零的 事件,并执行它。

      for( TArray<ULevel*>::TConstIterator it = GetWorld()->GetLevels().CreateConstIterator(); it; ++it )if( CurLevel && CurLevel->bIsVisible )if( EventTarget && EventTarget->NumParms == 0)

参考资料

  • https://wiki.unrealengine.com/Solus_C%2B%2B_Tutorials#Solus_C.2B.2B_Tutorial:_Creating_Custom_Level_Blueprints_in_C.2B.2B
0 0
原创粉丝点击