UMGにはAnimationという機能がありTimeline上でトラックを作成し、Widgetのパラメータを操作したりイベントに通知することができます。
UE4.16からMaterialParameterCollection(以下MPC)のトラックも作成できるようになり、MPCを使っているマテリアルなどにUMGのAnimationからパラメータを渡すことができるようになりました。
しかし、MPCを使う場合MPCを使っているすべてのクラスに影響してしまい、インスタンスごとにパラメータを操作することができません。
Widgetのパラメータをブループリントやマテリアルに渡して操作することも可能ですが、本来の用途と異なるのであまりやりたくない…
そこで今回はAnimationで変数のトラックを作成し、複数のWidgetに個別でパラメータを渡す方法を紹介していきます。
まずはWidgetクラスを継承したクラスを作成します。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/66c19942ab4ba346fdb64ccc04cde373-219x300.jpg)
今回はImageクラスを継承したクラスを作成しました。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/66c19942ab4ba346fdb64ccc04cde373-1.jpg)
次に、作成したクラスの中で任意の変数を定義し、”Expose to Cinematics”を有効にします。
クラスの型など”Expose to Cinematics”の項目がない型はトラックを作成できません。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/0d40a5e4a645fc6b96e767d64ac0878e-1-1024x273.png)
Widgetクラスを継承したクラスを作成するとUMGのPalette内に作成したクラスがあるので、UMGのDesigner内に配置します。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/0d40a5e4a645fc6b96e767d64ac0878e-3-1024x506.png)
AnimationのTimelineに配置したWidgetを登録し、配置できるトラック一覧を見ると先程クラス内で定義した変数のトラックが
作成できるようになっています。
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/tnm-300x178.png)
![](https://historia.co.jp/wp/wp-content/uploads/2017/07/66c19942ab4ba346fdb64ccc04cde373-2-1024x229.jpg)
あとは変数の値を処理したい部分に渡すだけです。
Widgetの他のパラメータと組み合わせて使う場合に便利だと思います!
また、RetainerBox Widgetと組み合わせて使えば更に表現の幅が広がりそうです。
是非使ってみて下さい!
◯まとめ
- Widgetクラスを継承することでカスタムWidgetが作成可能
- カスタムWidgetに追加した変数は”Expose to Cinematics”を有効にすればAnimationのTimeline上にトラックを作成可能