1
0

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 3 years have passed since last update.

LevelSequenceDirector を簡単に開けるようにした

Last updated at Posted at 2020-02-21

UE4.23以前では Level Sequence の LevelSequenceDirector を開くまでに手順が少し多く、
簡単に開きたかったので、某ねこのアイコンの人のツイートを参考に実装しました。

※4.24ではスパナアイコンから開けます。
OpenDirectorBP_UE4.24.png

0.準備(前提)

UE4.23.1 言語は英語です。
プロジェクト名を TestProject としています。

1.Build.cs にモジュールを追記する

"LevelSequence""UnrealEd"PublicDependencyModuleNames に追加します。

TestProject.Build.cs
// Fill out your copyright notice in the Description page of Project Settings.

using UnrealBuildTool;

public class TestProject : ModuleRules
{
	public TestProject(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

        PublicDependencyModuleNames.AddRange(new string[] { "LevelSequence", "UnrealEd" });  // この1行を追加

        PrivateDependencyModuleNames.AddRange(new string[] {  });

		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
		
		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

2.UBlueprintFunctionLibrary を継承したクラスを作成する

UBlueprintFunctionLibrary を継承したクラスに LevelSequenceDirector を開く関数を追加します。
コードは猫のアイコンの人のツイートにある動画のコメントに書かれています!
(なぜか並べ替えで新しい順にしないと表示されない)

MyBlueprintFunctionLibrary.h
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"

/**
 * 
 */
UCLASS()
class TESTPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
	
	// シーケンサーのディレクターを開く.
	UFUNCTION(BlueprintCallable)
	static void OpenDirectorBP(ULevelSequence* LevelSequence);
};

MyBlueprintFunctionLibrary.cpp
// Fill out your copyright notice in the Description page of Project Settings.


#include "MyBlueprintFunctionLibrary.h"
#include "LevelSequence.h"
#include "Kismet2/KismetEditorUtilities.h"


void UMyBlueprintFunctionLibrary::OpenDirectorBP(ULevelSequence* LevelSequence)
{
	if(!IsValid(LevelSequence))
	{
		return;
	}
	UBlueprint* DirectorBP = LevelSequence->GetDirectorBlueprint();
	if(DirectorBP && DirectorBP->FunctionGraphs.Num() > 0)
	{
		FKismetEditorUtilities::BringKismetToFocusAttentionOnObject(DirectorBP->FunctionGraphs[0]);
	}
}

3.Blutilityを作成します。

エディタを立ち上げてBlutilityを作成します。
AddNew → Editor Utilities → Editor Utility Blueprint を選択し、 AssetActionUtility を選んで Select
名前は適当でいいです。(EUB_OpenSequenceDirectorにしました。)

4.関数の作成

先ほど作成した EUB_OpenSequenceDirector を開き、関数を作成していきます。
関数名は OpenSequenceDirectorBP としました。
BPは下記の画像です。
OpenSequenceDirectorBP.png

5.サポートするクラスを指定します。

先ほどと同じく EUB_OpenSequenceDirectorGetSupportedClass をオーバーライドし、
ReturnNode の ReturnValue を Level Sequence にします。

GetSupportedClass.png

6.動作確認。

ContentBrowser で適当な LevelSequence を右クリックし、 ScriptedActions → OpenSequenceDirectorBP を選択します。
LevelSequenceDirector が開けたら完成です!

OpenBP.png

7.最後に

1で Build.cs に追加した __UnrealEd__モジュールはエディタ用のモジュールなので、このままだとパッケージ化に失敗します。
この機能をモジュールに分けるか、 Build.cs 内でエディタービルドのみリンクするように修正する必要があります。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?