【UE5】プログレスバーダイアログの実装方法

UEエディタ操作時には画像のようなプログレスバーダイアログが様々な箇所で表示されますが、今回はこのプログレスバーダイアログの実装方法を紹介します。



1.処理するクラスを作成

今回はテスト用に BlueprintFunctionLibrary を継承したC++クラスを作成しました。

SlowTask という関数を用意し、この中で処理していきます。

UCLASS()
class TEST_5_2_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable)
	static void SlowTask();
};


2.ダイアログで実行する処理を記述

関数の中身は下記の通りです。

#include "Misc/ScopedSlowTask.h"

void UMyBlueprintFunctionLibrary::SlowTask()
{
	FScopedSlowTask TestTask(100, LOCTEXT("SlowTaskText", "Test Task 1/100"));  // タスクの定義
	TestTask.MakeDialog();  // ダイアログ作成
	
	for (int32 i = 0; i < 100; i++)
	{
		TestTask.EnterProgressFrame(1, FText::FromString(FString::Printf(TEXT("Test Task %d/100"), i)));  // タスク進行
		
		UE_LOG(LogTemp, Log, TEXT("Test Task %d"), i);
		FPlatformProcess::Sleep(0.05f);
	}
}

まずは FScopedSlowTask でタスクを定義します。
その後に MakeDialog 関数でダイアログを作成し、for文で100回処理をするようにしています。

処理の度に EnterProgressFrame 関数でダイアログのバーの進行と文字列の更新をしています。
また、処理の進行が分かりやすいように Sleep で 0.05秒待つようにしています。

3.EUWで実行

EditorUtilityWidget(EUW)を作成し、ボタンを押したら SlowTask を実行するようにします。

実行すると下のようにダイアログが表示され処理されます。



機能紹介

今回は MakeDialog 関数で作成しましたが、MakeDialogDelayed 関数を使うと指定秒数待ってからダイアログを表示することができます。

また、MakeDialog, MakeDialogDelayed の引数から bShowCancelButton を true にするとキャンセルボタンを表示させることができます。

キャンセルボタンを有効にする場合は、ShouldCancel 関数でキャンセルされたかどうかを判定するようにしましょう。


UE Version : 5.2.0