K.Y.さん、しんちょくどーですか?

仕事や趣味で知ったこと、つまずいたことを書いています

【UE5】CommonUI の Widget の使い方 - CommonLazyImage

Common UI Plugin を有効にすると追加される Widget の使い方を紹介します。

こちらの記事では CommonLazyImage について紹介しています。
ほかの Widget については下記の記事をご覧ください。

kumasan-debug.hatenablog.com

確認環境

  • UE5.4
  • Common UI Plugin Beta Version 1.0

機能

UE 標準で用意されている Image を拡張した Widget です。

メインで表示したい画像を非同期ロードで読み込んでいる間だけ何か別の画像を表示しておくことができます。

設定項目

ShowLoading

オンにすると Widget 編集中に後述の LoadingBackgroundBrush を表示します。

LoadingBackgroundBrush

メインで表示したい画像を非同期ロードで読み込んでいる間、代わりに表示する画像を設定します。

Brush

メインで表示したい画像を設定します。
後述の関数で読み込んだ画像はこちらに設定されます。

MaterialTextureParamName

Brush > Image がマテリアルの場合に設定が有効になります。

マテリアルのテクスチャパラメータ名を設定します。
この設定により、テクスチャを読み込んで設定する関数( SetBrushFromTexture 関数や SetBrushFromLazyTexture 関数など)を実行した後、読み込まれたテクスチャが Brush > Image に設定されているマテリアルのテクスチャパラメータに割り当てられます。

ただし、 MaterialTextureParamName が None のままだった場合は読み込まれたテクスチャで Brush が上書きされます。

イベント

OnLoadingStateChanged

イベントが呼ばれるタイミングは不明です...

イベントの名前から推測すると、画像のロード状態が変化したときに呼び出されるイベントだと思います。
が、実際にロードを試してみてもイベントが呼び出されずどのタイミングで呼び出されるのかわからないままでした。

入力ピン 内容
IsLoading 画像をロード中かどうか...多分...

関数

SetBrushFromLazyTexture

指定のテクスチャを非同期ロードして Brush に設定します。

入力ピン 内容
LazyTexture

非同期ロードするテクスチャ

テクスチャが None の場合は
プロジェクト設定 > プラグイン > 共通 UI フレームワーク > 画像 > デフォルトの画像リソースオブジェクト
に設定されている画像が使用される

MatchSize

画像のサイズ (Brush > ImageSize) を
読み込んだテクスチャのサイズに変更するかどうか

SetBrushFromLazyMaterial

指定のマテリアルを非同期ロードして Brush に設定します。

入力ピン 内容
LazyMaterial

非同期ロードするマテリアル

マテリアルが None の場合は
プロジェクト設定 > プラグイン > 共通 UI フレームワーク > 画像 > デフォルトの画像リソースオブジェクト
に設定されている画像が使用される

SetBrushFromLazyDisplayAsset

指定のテクスチャ or マテリアルを非同期ロードして Brush に設定します。

入力ピン 内容
LazyObject

非同期ロードするオブジェクト(テクスチャ or マテリアル)

オブジェクトが None の場合は
プロジェクト設定 > プラグイン > 共通 UI フレームワーク > 画像 > デフォルトの画像リソースオブジェクト
に設定されている画像が使用される

MatchTextureSize

画像のサイズ (Brush > ImageSize) を
読み込んだテクスチャのサイズに変更するかどうか

IsLoading

非同期ロード中かどうかを判定します。

出力ピン 内容
ReturnValue 非同期ロード中かどうか

SetMaterialTextureParamName

MaterialTextureParamName を設定します。
Brush > Image にマテリアルが設定されていない場合はこの設定が無視されます。

また、 SetBrush 関数などで新しい Brush が設定された場合は MaterialTextureParamName が None に戻りますのでご注意ください。

入力ピン 内容
TextureParamName 設定するテクスチャパラメータ名

使用感

Image に機能を追加した形になっているので、 Image の代わりに CommonLazyImage を使っておこうかなという感じです。
そうしておくと、 LoadingBackgroundBrush を必要に応じて使えるので。


記事の内容について、誤字脱字、内容の誤り、感想などありましたら気軽にコメントしていただけると嬉しいです。(このブログでも SNS でも歓迎です。)