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
 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
 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
 5for( TArray<ULevel*>::TConstIterator it = GetWorld()->GetLevels().CreateConstIterator(); it; ++it ) 
 if( CurLevel && CurLevel->bIsVisible )
 if( EventTarget && EventTarget->NumParms == 0)
 
- 从源码中可以看出,它是重当前 World 中的 所有Level 中查找 显示状态中的 且 事件参数为零的 事件,并执行它。