アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE4】ListViewにDataTableのデータを表示する

UMGの機能の一つListViewを紹介します(*'▽')

今回はUE4のListViewにDataTableの値を渡して表示するしたり、

動的に項目を追加したり減らしたりする方法を紹介します。

今回作成するListViewはこんな感じです。

UE4.27.2を使用しています。

※間違いや誤字脱字等ありましたらコメント等いただけますと幸いです。

各データの準備

まずは各データ情報を準備します。

コンテンツブラウザを右クリックして、

「ブループリント」項目の構造体を選択します。

構造体を作成する

構造体を作成したらTextの項目を2つとアイコン用のSlateBrushを、

新規変数ボタンから追加していきます。

※追加方法は一番上の新規変数を押して、

 変数項目を追加して変数の型を変更します。

構造体のデータを追加後の状態

続いてこの構造体情報を元にDataTableを作成します。

構造体を作成した時と同様にコンテンツブラウザを

右クリックしたメニューからその他のデータテーブルを選択します。

データテーブルの追加

データテーブルを選択すると「行構造を選択」と出るので、

先ほど作成した構造体を選択します。

行構造の選択

選択した構造体の元にデータリストが出来上がります。

データテーブルに最初からデータが入ってないので追加していきます。

構造体データの追加

実際に追加した場合構造体の項目の下にいくつかデータが作成されます。

※今回はブログ用の仮のデータになるので各自に合うデータ構造にしてください。

データテーブルの仮データ設定

・目次に戻る

UMGやBPの処理

ここから実際にBPの処理や動作を作成していきます。

まずはウィジェット用のBPを追加します。

※こちらもコンテンツブラウザを右クリックして、
 ウィジェットブループリントを選択して追加します。

ウィジェット用ブループリントの作成

追加したらウィジェットブループリントを開き、

パレットのListViewをドラッグして追加します。

ListViewの追加

ListViewを追加したらリストエントリー項目にある+ボタンを押す。

※このEntryWidgetが一つ一つのリスト項目になります。

EntryWidgetを追加

追加したら中身の情報を追加していきます。

中身のデザインは下の図のようなデザインとなってます。

List1つの項目デザイン

追加が完了したら設定を行うためにクラス設定から、

UserObjectListEntryをインターフェースに追加します。

インターフェースを追加

追加するとインターフェースにOnListItemObjectSetという項目が、

追加されるのでこちらを右クリックしてイベントを実装を選択します。

インターフェスを追加

ここまで出来たらDataTableのデータを読み込んで、

Listitemに渡すためのBPを作成します。

BPはObjectBluePrintとして作成します。

Objectのブループリント内容

処理はDataTableを指定してTypeという数字を文字列にしてデータを渡してます。
変数はデータテーブルを参照するための数値です。(キャストしてます)
※構造体の変数も一応用意していましたが特に必要はありません。

Listの処理の方も追加していきます。

まずは変数を3つ追加します。(Text2つとSlateBrush)

各種変数

上記で設定した変数はバインドしておいてください。

画像のバインド

テキストもバインド

実際の処理は以下になります。

インターフェースで追加したイベントからListItemにデータを渡す処理です。

ListItem一つ一つのデータ情報

続いてListViewの追加を処理を追加します。

一つ一つのデータを保持しておくためにListItem用のデータ配列変数を作ります。

ListViewItem用の配列

まずはListViewを表示する時に呼ばれるConstructイベントになります。

起動時のデータ追加

※ListViewにItemを追加する際、
 一つのインスタンスを使いまわすとエディターがクラッシュするので注意!!
 必ずデータ一つごとにオブジェクトを追加すること!

クラッシュした際のエラーログ

ListViewへのアイテム追加処理になります。

ListItem用のデータを作成してListView追加後作成したデータを配列に保持します。

アイテム追加用の処理

ListView内のアイテムを削除します(最後から順番に)

ListViewのアイテムがあるかチェックしてListViewと配列内のデータを削除します。

ListView内のアイテムの削除

・目次に戻る

レベルへの配置や動作

レベルブループリント上で画面に追加する処理と、

Listへの追加処理を追加します。

AddViewPortで追加

ListItemの追加と処理

以上ですべての設定は完了になります。

・目次に戻る