執筆: T.H.
はじめに
UE4 のスクリーンショット撮影には色々な方法があります。今回はその中からいくつかの方法とその違いをご紹介いたします。
UE4 エディタ上のスクリーンショット撮影方法
ショートカットキー『F9』を使用する
・準備
準備は不要で、挙動は異なりますが、再生中かどうかに関わらずスクリーンショットを撮る事が出来ます。
・スクリーンショット出力先
プロジェクトフォルダ内の『\Saved\Screenshots\Windows』に出力されます。(Windows の場合)
・スクリーンショットに含まれるもの
再生中の場合はエディタ全体
(ビューポート右上の UI という白文字はウィジェットで表示しています)
再生中ではない場合はビューポート
※右上にある UI の文字は BeginPlay 時に追加しているため表示されておりません。
ブループリントで ExecuteConsoleCommand の shot を使用する
・準備
(例)レベルブループリントで特定のキーが押下された時に ExecuteConsoleCommand の Command shot が呼ばれるようにする。
・スクリーンショット出力
プロジェクトフォルダ内の『\Saved\Screenshots\Windows』に出力されます。(Windows の場合)
・スクリーンショットに含まれるもの
プレイ中のレベル (UI 無し)
C++ で FScreenshotRequest の RequestScreenshot を使用する
・準備
(例)まずC++ で MyBlueprintFunctionLibrary に下記関数を追加する。
UFUNCTION(BlueprintCallable, Category = "MyBlueprintFunctionLibrary")
static void ScreenshotWithFilename(FString file_name, bool is_show_UI);
void UMyBlueprintFunctionLibrary::ScreenshotWithFilename(FString file_name, bool is_show_UI)
{
FString save_location = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir());
FString file_path = save_location + FString(TEXT("/Saved/Screenshots/")) + file_name + FString(TEXT(".png"));
FScreenshotRequest screenshot_request = FScreenshotRequest();
screenshot_request.RequestScreenshot(file_path, is_show_UI, false);
}
次にレベルブループリントで特定のキーが押下された時にExecuteConsoleCommand の Command shot が呼ばれるようにする。
(FileName は出力ファイル名ですので、任意の名前にして下さい)
・スクリーンショット出力先
ScreenshotWithFilename 関数で指定したフォルダ (今回は『\Saved\Screenshots』) に出力されます。
・スクリーンショットに含まれるもの
IsShowUI を true にするとエディタ全体
IsShowUI を false にするとプレイ中のレベル (UI 無し)
パッケージ化後のスクリーンショット撮影方法
※プロジェクト設定→パッケージング→Project→BuildConfiguration が Shipping の場合は『①ショートカットキー『F9』を使用する』と『②ブループリントで ExecuteConsoleCommand の shot を使用する』は使用出来ません。
(Development 等の場合は使用可能です)
①ショートカットキー『F9』を使用する
UI 有り
②ブループリントで ExecuteConsoleCommand の shot を使用する
UI 無し
③C++ で FScreenshotRequest の RequestScreenshot を使用する
IsShowUI を true にすると UI 有り
IsShowUI を false にすると UI 無し
まとめ
スクリーンショットは色々な方法で撮影出来ますが、Shipping でパッケージ化後には使えない、UI が含まれない、エディタ全体が撮影される等違いがあります。用途に応じた撮影方法をご検討ください。