UEを学ぶ「タイトル画面を作る_3_遷移時のフェードアウト」

youtu.be

 

Q&Aで触れられた画面遷移時のフェードアウト処理について作っていきます。

 

タイトル画面に文字を表示したときと同様に

コンテンツブラウザ上で
右クリック>ユーザーインターフェース(一番下)>ウィジェットブループリント

でUIを追加します。

名称は「UMG_FadeIn」。

f:id:happyherpy:20211025021540p:plain

ウィジェットは「UMG_〇〇」ってつけて管理していくみたいですね。

これはウィジェットが元々Unreal Motion Graphics UI デザイナ (UMG) という

機能名であることに由来しているようです

docs.unrealengine.com

ウィジェットを開き、パレットから「Border」を検索し

ドラッグ&ドロップで画面に追加。

詳細>アンカー

のパラメーターを

位置X 0、位置Y 0、サイズX 1920、サイズY 1080

として、画面サイズぴったり覆うような真っ白い画像が作成されます。

f:id:happyherpy:20211025022404p:plain

その後、

階層>[UMG_FadeIn]>[CanvasPanel]>[Border]

が選択された状態で

アニメーション>「+アニメーション」というボタンを押します。

すると「NewAnimation」というアニメーション設定が追加されるので

FadeOutと名付けて、フェードアウトアニメーションを作りましょう。

(今更なんですが、FadeInを作っているのにアニメーションはFadeOutって変ですね。

本来はウィジェット名もFadeOutにするのが正しいんでしょうね…)

 

アニメーションを選択すると「タイムライン」というタブが表示されます。

タイムライン>「+トラック」というボタンを押し「Border」を選択することで、

「Borde_0」というのがトラック上に出現します。

さらに「Borde_0」の右部にある「+トラック」を選択し「BrushColor」を追加。

f:id:happyherpy:20211025023047p:plain

「BrushColor」を展開すると、

Borderの色設定をRGBAで行える項目があるので

0秒時点をRGBAすべて0にして「透明」を設定。

右側のタイムライン上にある縦棒を動かしていき

1秒時点の色をRGBが0、Aが1に設定することで、

1秒間かけて透明から真っ黒に変化するアニメーションを作ることができました。

 

次に、これを「UIを画面に追加したタイミングで再生する」プログラムを設定します。

画面右上から「グラフ」をクリックしてプログラム表示に切り替えて、

f:id:happyherpy:20211025023449p:plain

「PlayAnimation」ノードを追加します。

f:id:happyherpy:20211025023550p:plain

※「FadeOut」は

マイブループリント>Animations

内にあるので、ドラッグ&ドロップし「GetFadeOut」を選択します。

追加した「FadeOut」はInAnimationに接続。

f:id:happyherpy:20211025024125p:plain

 

次に、Titleに組み込みます

 

ブループリント>レベルブループリントを開く

などで、Titleのブループリントを開き

「create widget」でwidgetノードを作成。

f:id:happyherpy:20211025024800p:plain

 

Classにはさっき作った「UMG_FadeIn」を指定し、

ブランチから接続する。

(ちなみにノードの切断はAlt+左クリック)

f:id:happyherpy:20211025024944p:plain

これで、

「特定のキーを押すと、フェードアウトが生成される」

という一連の流れができます。

「ReturnValue」からドラッグし

「AddToViewport」ノードを生成。

(他の接続穴からだとちゃんと検索されない?ので、ReturnValueから引っ張って

Viewportで検索するのがオススメ)

 

更に、フェードアウト仕切るのを待って遷移してほしいため

「Delay」ノードを追加し、値を1秒に。

(Dキー+左クリック で追加可能)

f:id:happyherpy:20211025025453p:plain

これで、1秒かけて画面が暗くなり、1秒経過と同時に遷移が起こる、

という挙動になるわけですね。

ちなみに遷移後のFadeInは、遷移先の画面で作る必要があるみたいです。