レベルシーケンサでの時間操作

自分へのメモも兼ねて、Qitaに記事を起こしていきます。
過去に調べた事でもいざ使おうとした際に、再度調べ直してしまう事もあった為、記事にしてきます。


# レベルシーケンサでの時間について

今回は、レベルシーケンスの時間のアクセスについて書いてきます。
『開始・終了時間』と再生時間でアクセス方法が異なり、またウィジェットとブループリントでアクセス方法が異なる為、一度整理したいと考えていました。
この記事で指している『レベルシーケンスの時間』とは、以下の三つを指します。

1. レベルシーケンスの開始時間
1. レベルシーケンスの終了時間
1. 現在再生している時間


# 調査環境
UnrealEngine 5.3.2

# ウィジェット(Editor Scripting Utilities)からのアクセス
### レベルシーケンスの開始時間

レベルシーケンスの開始時間にアクセスするノードです。
**NonPure関数(青いノード)のレベルシーケンスの取得にはGetCurrentLevelSeuqnceノードを使用してください**。

**GetPlaybackStart**

![GetPlaybackStartノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/05bfb7d0-2757-da1d-36ae-f40362ca52aa.png)

**SetPlaybackStart**

![SetPlaybackStartノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ad20944d-e776-0628-4584-e4a246d1cf40.png)

**使い方**
![GetPlaybackStartノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ab89f21e-35fc-c5d4-ade5-9a70d26833e7.png)


### レベルシーケンスの終了時間

レベルシーケンスの終了時間にアクセスするノードです。
**NonPure関数(青いノード)のレベルシーケンスの取得にはGetCurrentLevelSeuqnceノードを使用してください**。
**GetPlaybackEnd**

![GetPlaybackEndノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/3fb45415-43fe-e857-2156-d49fe69f1591.png)

**SetPlaybackEnd**

![SetPlaybackEndノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/1b63ef9f-f298-d0aa-b7c3-d66b66c56b1f.png)

**使い方**
![GetPlaybackEndノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/495e3be7-c932-b4ca-6b98-b93a4849e54e.png)

### 時間の範囲の取得

時間の範囲を取得するノードです。
**NonPure関数(青いノード)のレベルシーケンスの取得にはGetCurrentLevelSeuqnceノードを使用してください**。

**GetPlaybackRange**
![ブループリントのGetPlaybackRangeノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ef8e5407-57b1-15aa-b852-4dbcafd8823f.png)

**使い方**
![GetPlaybackRangeノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/165230fa-d808-b5b1-8227-ed82f58af994.png)


:::note warn
SetPlaybackRangeノードは実装されていません
:::

### 現在再生している時間

レベルシーケンスの現在の時間にアクセスするノードです。

**GetCurrentTime**

![GetCurrentTimeノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/2238c2cc-48f6-7173-1191-7fef5a880bd9.png)

### 再生中かどうか調べる

レベルシーケンスを再生中かどうかを知るには、IsCurrentLevelSequencePlayingノードを使用します。

![IsCurrentLevelSequencePlayingノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ced37e23-bc5d-360b-cc9e-400cf7f23ac0.png)

:::note info
WidgetのTickでパラメータを同期させたいけど、常に同期させるとツールから更新できないと思います。
再生時(更新された時)のみ同期するような使い方もできると思います。
:::


# ブループリント(Actor)からのアクセス

### レベルシーケンスの開始時間

レベルシーケンスの開始時間にアクセスするノードです。
**レベルシーケンスの取得にはPure関数(緑のノード)のGetCurrentLevelSeuqnceノードを使用してください**。

**GetPlaybackStart**

![ブループリントのGetPlaybackStartノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/144f794c-ecdf-d9f1-a365-820f697a1ac2.png)


**SetPlaybackStart**

![ブループリントのSetPlaybackStartノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/29000c7a-3093-5421-c653-45a9fc66e1cd.png)

**使い方**

![GetCurrentLevelSeqeunceでのGetPlaybackStartノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/9057f20f-9d06-44a2-1dd1-c4219577b4f3.png)


### レベルシーケンスの終了時間

レベルシーケンスの終了時間にアクセスするノードです。
**レベルシーケンスの取得にはPure関数(緑のノード)GetCurrentLevelSeuqnceノードを使用してください**。

**GetPlaybackEnd**

![ブループリントのSetPlaybackStartノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/53e9a651-8642-35f4-b09c-3845cb49fd8a.png)

**SetPlaybackEnd**

![ブループリントのSetPlaybackEndノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/9e016f3a-624b-e775-81d2-b6ec142ed90c.png)

**使い方**
![ブループリントのGetPlaybackEndノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/53f98342-aa2d-8d30-a878-66e8559e149a.png)


### 時間の範囲の取得
時間の範囲を取得するノードです。
**レベルシーケンスの取得にはPure関数(緑のノード)GetCurrentLevelSeuqnceノードを使用してください**。

**GetPlaybackRange**

![ブループリントのGetPlaybackRangeノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ef8e5407-57b1-15aa-b852-4dbcafd8823f.png)

**使い方**

![ブループリントのGetPlaybackRangeノードの使い方.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/804c46f3-bd3e-7360-609b-891690bf88b9.png)


### 現在再生している時間

**GetCurrentLevelSequenceCurrentFrame**

![GetCurrentLevelSequenceCurrentFrameノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/52fb7502-3fbf-5b3c-9c7a-227322f772fd.png)



# Runtime時に現在の再生時間を取る

最後に例外の対応として、私も頭を捻った対応を説明します。
それは、MovieRenderQueueでレンダリング時に、現在の再生フレームを取りたい場合です。
『GetCurrentLevelSequenceCurrentFrameでは駄目なのか？』と疑問に思う方も居ると思いますが、GetCurrentLevelSequenceCurrentFrameは、PIEでは動作しますが、<font color="red">**MovieRenderQueueでレンダリング時は、0を返します**</font>。そこで、別のアプローチ方法を探す必要がありました。

方法としては、『**SeqeuencePlayerから取得する**』方法になり、**GetCurrentTimeノード**を使います。

**GetCurrentTime**

![SeqeuncePlayerのGetCurrentTimeノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/5f177c44-afcd-126e-1cd6-cd38f239420d.png)

**使い方**

![SequencePlayerとGetCurrentTimeで時間を取得.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/9290affd-1b55-b59c-012e-f0e009dd7008.png)



# おまけ
ここからはおまけ記事になります。
せっかくなので、他のノードの機能もさわってみました。

# 再生時間のロックの切り替え

**SetPlaybackRangeLocked**

![SetPlaybackRangeLoackedノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/d64f3aa9-10ba-c07f-52ca-d08aaf6c7988.png)

再生時間のロックを切り替えられます。ロックされていると、マウスオーバーしてもアイコンが変更されません。

**IsPlaybackRangeLocked**

![IsPlaybackRangeLockedノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/0afdde3b-4449-c459-93a2-c28a69093283.png)

再生時間のロックされているかは、このノードで調べられます。


# フレームレートの変更

レベルシーケンスのフレームレートは、それぞれ『Get』『Set』が用意されています。

**GetDisplayRate**

![SetDisplayRateノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/28a995a7-968d-74d4-3072-6a137f41d9d3.png)

**SetDisplayRate**

![SetDisplayRateノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/d02cd117-8609-302c-19ec-c800df1cba09.png)

# 再生スピードの変更

レベルシーケンスの再生スピードは、それぞれ『Get』『Set』が用意されています。

**GetPlaybackSpeed**

![GetPlaybackSpeedノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/ae2221e3-e28b-cb09-0224-a97710f53611.png)

**SetPlaybackSpeed**

![SetPlaybackSpeedノード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153021/78a8159c-fb7c-6ecf-386c-24beb53e20c5.png)