アセット内のテクスチャーを検索する仕組み
次に作成した「BP_Data」に変数やブループリントを加えます。ここで定義した変数は後述するデータアセットで使用することできるようになります。ポイントは(6)の「Get Assets by Path」。指定したパス内にあるデータを全て取得できる便利なノードです。
- 変数を追加し「TexDic」とします。
- 変数の型はMap型に設定します。これは連想配列のようにキーと値をセットに保管する配列です。
- カスタムイベントを作成します。名称は「Reload Data」とします。
- 「Reload Data」の詳細パネルで「エディタで呼び出す」をONにします。これでエディタ上にボタンが現れ、ボタンをクリックすることでこのイベントが呼び出されるようになります。
- 配列を空にします
- 検索したいフォルダのパスを入力し「Recursive」をONにします。なおフォルダのURLはコンテンツブラウザで確認できます。
- 見つかったテクスチャーの個数分、繰り返し処理を行います。
- アセットの情報を分解し、「アセット名」を取り出します。
- アセットをテクスチャーとしてキャストします。
- アセット名とテクスチャーをセットで配列に代入します。
レベルの構築
データアセットに追加されたテクスチャーを元に「BP_Image」をスポーンしてレベルに配置します。今回はレベルブループリントを使用していますが、ブループリントクラスでも問題ありません。
- 新規レベルの作成
- レベルブループリントを開く
レベルプループリントの構築
- 変数を追加。変数名は「Data」とします。
- 変数の型を「BP_Class」を設定しコンパイル。
- 「Data」のデフォルト値として「DataAsset」を選びます。
- DataAsset内のTexDic配列に含まれているすべてのデータを取得
- 配列データの総数分繰り返し処理をする
- スポーンする位置を計算
- 「BP_Image」クラスをスポーンする
- 「BP_Image」に配置されているPlaneに適用されているマテリアルをインスタンス化
- 配列からテクスチャーを取り出す
- Planeマテリアルのテクスチャーを、データアセットから取得したものに変更する