UE4.26 から Customizable Sequencer Tracks プラグインが追加され、C++からクラスを追加しなくても簡単にシーケンサーの独自トラックを作れるようになりました。
独自トラック作成手順
2.BPクラスの作成
以下の3つのクラスを親にしたブループリントを作成します。各クラスの役割は後述しています。
・SequencerSectionBP
・SequencerTrackBP
・SequencerTrackInstanceBP
3.クラスの紐付け
SequencerTrackBP を継承したBPを開き、Class Defaults から
『Default Section Type』に SequencerSectionBP を継承したBPを、
『Track Instance Type』に SequencerTrackInstanceBP を継承したBPを設定します。
これだけでシーケンサーのトラック欄に作成したトラックが追加されます。
各クラスの役割
SequencerSectionBP
セクションの情報を持っているクラスです。各パラメータのデフォルト値を設定できます。
.
SequencerTrackBP
トラックの情報を持っているクラスです。こちらも Class Defaults から各パラメータの設定ができます。
.
・Master Track と Object Track
Track Type を変更することでオブジェクトに依存したトラックか、そうではないトラックかを設定できます。
Object Track の場合は、Supported Object Type を設定する必要があります。
Master Track はまだ未実装なのか、トラック実行中のイベントが実行されませんでした。現状使えるのは Object Track のみのようです。
・1つのトラックで複数種類のセクションを扱う
Supported Sections に SequencerSectionBP を継承したBPを指定することで Default Section Type 以外のセクションもトラック内に追加できます。
・トラックの見た目を設定
Icon, Dispay Name からアイコン、トラック名を設定できます。
SequencerTrackInstanceBP
トラック実行時の独自の処理を行う役割を担っています。
関数を Override して各タイミングで処理を実行できます。
各関数の実行タイミングについては "御堂 レゾ" さんのこちらのツイートがとてもわかりやすいです。
Customizable Sequencer Tracks Plugin の
— 御堂 レゾ (@MidouReso) 2020年10月4日
SequencerTrackInstanceBP で override できる
Event の実行タイミングについて調べてみました!
実行中の Section が 0 になる瞬間には
OnInputRemoved などが呼ばれず、
OnDestroyed だけが呼ばれるところに注意です……!#UE4 #UE4Study #ResoMemo pic.twitter.com/rme8coMyIg
・セクション情報の取得
各セクションの情報を取得できるノードが用意されています。
もしくは、各セクションの最初と最後に実行される OnInputAdded or OnInputRemoved の Input からセクション情報を取得できます。
こんな感じでセクションの情報を取得できます。
以上になります。
Object Track で紐付いているオブジェクトを取得するインターフェイスが用意されていないので紐付いているオブジェクトの制御が難しい部分が残念でしたが、まだプラグインバージョンが『0.1』なのでアップデートに期待したいと思っています。
UE Version : 4.26.0-14830424