LoginSignup
1
1

【UE5】Sequencerの親クラスを作成し、テンプレート化を行う方法

Posted at

はじめに

UEのシーケンサーではBPで作成したイベントを指定フレームで実行することが可能で
イベントは以下の二つの方法で作成することができ、それぞれ利点と欠点があります。

方法①イベント実行のアクターを配置し、アクター側からイベントを実行させる

利点:
アクターを編集することで他シーケンサーでも使いまわすことが可能

欠点:
アクターにイベントが紐づくため、イベントの量が増えるほど視認性が悪くなってしまう
新規シーケンサーを作成の際に再度BPの再配置が必要

image.png

方法②シーケンサーの親クラスを変更し、親クラスのイベントを使用する

利点:
親クラスにイベントを追加するので、シーケンサー複製で同一のイベントをそのまま使いまわせる
イベントがシーケンサーに紐づくのでイベントのチャンネルの配置が自由になる

欠点:
プロジェクトが肥大化すると親クラスがどんどん大きくなってしまう

image.png

本記事ではこちらの作成方法を記載します。

1. クラスを作成する

プログラム側にULevelSequenceDirectorを継承したクラスを作成する

MyLevelSequenceDirector.h
#include "LevelSequenceDirector.h"

UCLASS()
class MYPROJECT_API UMyLevelSequenceDirector : public ULevelSequenceDirector
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
	void CharacterMove();
	virtual void CharacterMove_Implementation() {}
};

BP側の作成でも可能ですが、プログラム側でしか触ることができない関数も多いためプログラムで作成を推奨します。

2. 継承するアクターを作成する

ブループリントクラスを作成し、先ほど作成したクラスを指定して生成する
image.png

関数を作成する
image.png

3. Sequencerに親クラスを設定する

シーケンサーを作成し、BPを開く
image.png

クラス設定から先ほど作成したアクターを親クラスにする
image.png

4. シーケンサーで親クラスで作成したイベントを追加する

親クラスに作成した関数を更新することで、すべてのシーケンサーに対して更新を反映させることが可能
image.png

image.png

image.png

この方法であれば、シーケンサー内で使用する関数の管理の手間が楽になるかと思います。

大量のシーケンサーを作成する場合は事前に空のシーケンサーを作成してテンプレート化することも有効です。

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