2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UE4 レベルブループリントのメモ

Posted at

概要

UnrealEngine のレベルブループリントについてのメモ書きです。
C++での差し替え方法について。

環境

Windows10
Visual Studio 2017
UnrealEngine 4.26

参考

以下を参考にさせて頂きました、ありがとうございます。
UE公式:Level ブループリント
【UnrealC++】⑩レベルブループリント【UE4】

C++ でのレベルブループリントの差し替え

C++でのクラス用意

ALevelScriptActor を継承したクラスを用意します。
関連コード
Engine/Source/Runtime/Engine/Classes/Engine/LevelScriptActor.h

以下サンプル、イベントMyEventを追加しています。

MyLevelScript.h
#pragma once

#include "CoreMinimal.h"
#include "Engine/LevelScriptActor.h"
#include "MyLevelScript.generated.h"

UCLASS()
class MYPROJECT3_API AMyLevelScript : public ALevelScriptActor
{
	GENERATED_BODY()

public:
	AMyLevelScript();
	virtual ~AMyLevelScript()=default;
	
protected:
	virtual void BeginPlay() override;
	virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;

public:
	// 追加するイベント
	UFUNCTION(BlueprintImplementableEvent)
	void MyEvent();

};
MyScriptActor.cpp
#include "MyLevelScript.h"
#include "Engine.h"
#include "Engine/LevelScriptActor.h"

AMyLevelScript::AMyLevelScript()
{
}

void AMyLevelScript::BeginPlay()
{
	UE_LOG(LogTemp, Log, TEXT("AMyLevelScript::BeginPlay()"));

	Super::BeginPlay();

}

void AMyLevelScript::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
	UE_LOG(LogTemp, Log, TEXT("AMyLevelScript::EndPlay()"));

	Super::EndPlay(EndPlayReason);
	
}

レベルブループリントでの設定

クラス設定 -> クラスオプションで親ブループリントを差し替えます。

LevelBP.png

追加したイベント呼び出し

追加したスクリプトを検索して実行します。
処理負荷的に毎回検索して実行はよろしくないです。レベル側で開始/終了時にどこかで管理するようにすべきかと思います。

.cpp
// レベルスクリプト検索
TSubclassOf<AMyLevelScript> _FindClass;
_FindClass = AMyLevelScript::StaticClass();
TArray<AActor*> _ActorList;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), _FindClass, _ActorList);

// 見つかったら実行		
if(_ActorList.Num() > 0){
	AMyLevelScript* _ActorScript = Cast<AMyLevelScript>(_ActorList[0]);
	if( _ActorScript ){
		// イベント実行
		_ActorScript->Restart();
	}
}

まとめ

あまりレベルブループリントを使わなかったのですが、C++と紐づけるなら(個人的には)使いやすくなるかも。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?