BLOGブログ

2026.04.08UE5UE/ UMG

[UE5] 見た目が異なるウィジェットを ListView で表示したい

執筆バージョン: Unreal Engine 5.7.2

こちらの記事は以下の記事を読んでいる知識がある前提となります
[UE4]UE4.20で追加されたListViewウィジェットについて


 

UIエンジニアのみなさん、こんにちは

UIを作っていく中で、たくさんの項目を表示する必要がある場合、スクロール画面を採用する事が多くあると思います
UEでは標準機能で作る場合 ScrollBox か ListView という2つの内どちらかを利用します

今回は以下の様に異なる見た目の項目が並ぶ画面を ListView で作る方法を紹介していきます
オプション画面の様な見た目の画面になります

EntryItemクラスの作成

ListView で扱うパラメータを持つクラスを作成します
帯があるタイトル部分と無いコンテンツ部分を切り替えられる様にし、テキストをそれぞれ設定できる形にする為
以下の2つパラメータを持つようにします

・bIsTitle bool型:表示を切り替える
・Text Text型:表示するテキスト

今回の紹介ではオプション画面の様な見た目を作る為
Object型 BP_OptionListParam という名称でアセットを作成しました

 

各パラメータは オブジェクトを作成するタイミングで設定する為、Instance Editable Expose on Spawn 有効にしておく必要があります
画像では bIsTitle だけですが Textも同じ設定が必要です

EntryWidgetクラスの作成

オプション画面のリストの項目を扱う為
UserWidget型 の W_OptionListParts という名称でアセットを作成しました

 


ウィジェットクラス設定

ListView で使用する為に 作成したW_OptionListParts のクラス設定を変更します
Class Settings から Implemented Interface の欄に User Object List Entry を追加します

 


ウィジェット見た目の作成

作成した BP_OptionListParam のパラメータを使って、表示を変えるウィジェットを作成します

今回は WidgetSwitcher でタイトル表示とコンテンツ表示を切り替えられるようにしておきました

 


ウィジェットのBPの作成

まずは BP_OptionListParam のパラメータを受け取り、表示状態を切り替える関数を作成します
bIsTitle によって 表示されるWidget が変わり、テキストを反映する先も変更されています

 

作成した関数の引数は、BP_OptionListParam型 の変数を設定しております

 

EventGraphにて ListView の表示が更新の命令(EventOnListItemObjectSet)のタイミングで、定義した表示更新関数 Setup を呼ぶようにします

 

ListViewを表示するウィジェットの作成

作成した W_OptionListParts を表示する為に新しくウィジェットを作成します
UserWidget型 の W_Option という名称でアセットを作成しました

 


ウィジェットの見た目の作成 ListView の配置

Palette欄にて ListView を選択して好みの場所に配置します
今回は上部にオプションと表示するようにしたり、背景を Border で透過させてみたりしております

 

このままではエラーになってしまうため、先程作成した W_OptionListParts ListView EntryWidgetClass に設定します 

 


ウィジェットのBPの作成

ListViewに表示する要素を設定します

テキストの配列を渡す事で、ListView に要素を追加する関数 AddListViewItem を以下の様に作成しました
テキストの配列の初めの要素はタイトルとして設定される内容になります

作成されるObjectのクラスに BP_OptionListParam型 を設定するのを忘れずに

 

上記関数を使って、表示したい内容をテキストの配列に設定して起動時に追加されるようにします

完成

レベルに W_Option を表示する事で、タイトルが間に挟まった ListView が表示されます

 

今回は表示だけを行いましたが
bIsTitle が無効な場合にのみ、オプションを変更できるボタンやチェックボックスなどを追加する事で
オプション画面を実装する事もできます

現在 ScrollBox を使用している箇所も、ListView にする事でパフォーマンスアップするかもしれませんので
これを機に ListView の採用を検討してみてはいかがでしょうか

 

では、良いUIライフを