1. サイトトップ
  2. ブログ
  3. Unreal Engine
  4. UE5
  5. 【UE5】ムービーの状態を取得してみる

【UE5】ムービーの状態を取得してみる

はじめに

こんにちは! 情熱開発部・プログラム課の千原です!
まだまだ寒い日々が続いていますね。 体調を崩さないように暖かい恰好でお過ごしください!

さて、今回はUEでムービーの状態を取得してみたいと思います!
取得することでムービーの再生周りがスムーズに設計することができると思います。

使用するバージョン

UE5:5.4.4

ムービーの状態を取得してできること

今回紹介する方法で、ムービーの再生終了時や一時停止時などを取得することができます。
一時停止時はUIを表示するなど、再生終了時は以下のように別のムービーを読み込んで連続で再生するなどに利用することができます!

ムービー再生の準備

早速ですが、ムービーの再生準備から行っていきます!

メディアアセットの作成

あらかじめ再生するムービーをUE内に追加しておきます。
ドラッグアンドドロップすることで、uassetが作成されます。 

モニターの作成

まずは、モニターとなるActorを作成しましょう!
Actorを作成して、コンポーネントのCubeを追加します。

「コンポーネント>追加>キューブ」 

モニターっぽい見た目にするため、Cubeのサイズを調節します。
お好みのサイズで!

「詳細>拡大・縮小」

MediaPlayerの準備

次にムービーを再生する機能のMediaPlayerを作成しましょう!

「追加>メディア>メディアプレイヤー」

「ビデオ出力MediaTextureアセット」にチェックを入れて作成します。
そうすることで、MediaTextureも用意してくれます!

そして、用意してくれたTextureを基にマテリアルを作成します。
Textureを右クリックで選択し、「マテリアルを作成」の項目を選んで作成します!

Actorを開き、「マテリアル」の項目にセットします。

最後に任意のタイミングでムービーを再生したいので、MediaPlayerを開いて自動再生「Play on Open」をオフにしておきましょう!

Actorをレベル上に配置して再生準備は完了です! 
次は本題となる機能の紹介です!

ムービーの状態取得イベント

MediaPlayerには、再生状態を検知するためのイベントが用意されており、
これらのイベントを活用することで、任意のタイミングで処理を呼び出すことができます。
今回は4つのイベントを紹介します!

イベント名呼び出されるとき
On Media Openedメディアアセットが正常に開かれたとき
On End Reached再生終了したとき
On Playback Suspended一時停止したとき
On Playback Resumed停止、一時停止から再生再開したとき

イベントグラフの作成

イベントグラフでの作成方法を紹介します。
MediaPlayerからノードを伸ばし、「Assign」と検索すると状態の一覧が表示されます。

どれかを選択するとカスタムイベントが作成されるので、そこから関数などを呼ぶように設定します。

そして、イベントグラフを作成してみたものがこちらです。
これで各状態時に自作した関数が呼び出されます!

実際にゲーム内に反映し、各状態を取得したのを左上にログを出してみました!

具体的な使用例

具体的に使用した例を2点紹介します。

On Media Opened

メディアアセットを読み込んだ直後にムービーの再生を試みても、再生されない場合があります。
これはメディアアセットの読み込みが完了していないため発生します。

この問題の解決策として、「On Media Opened」から「Play関数」を呼び出すように設定すると、
正常にメディアアセットが読み込めたタイミングでムービーを再生することができます!

On Playback Suspended

ムービーを一時停止から再開するときに、再生時間を確実に同期させたい場合もあるかと思います。
その場合「On Playback Suspended」でMediaPlayerから再生時間を取得し、保持するようにするのが便利です。

再開する前に保持しておいた再生時間を「Seek関数」でセットすることで、同期することができます!

最後に

今回はブループリントを使って、ムービーの状態を取得するのに利用できる機能を紹介しましたが、もちろんC++でも使用することができます!
また、任意のタイミングでイベントの解除もでき、柔軟性もありますのでぜひUE内でムービーを再生することがあれば活用してみてください!

最後までご覧いただきありがとうございました!

参考サイト


【免責事項】

本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。