1. Home
  2. /
  3. Study
  4. /
  5. UE5 [EUW]5.2のAssetData構造体の変更対応について(再び)

UE5 [EUW]5.2のAssetData構造体の変更対応について(再び)

UE5 [EUW]5.2のAssetData構造体の変更対応について(再び)

UE5.2のAssetData構造体の変更対応について

5.2でもAssetData構造体の作りが変わりました。 5.1から5.2にプロジェクトをアップデートする際には、「EUWでAssetDataを使っている処理」について見直してください。

5.0から5.1で以下のような不具合が発生しました。

  • メンバー変数「ObjectPath」が無くなったことで使用しているとエラーになる
  • Class Nameが「None」を返すのでClassで分岐しているところの処理が走らなくなる

5.1で対応したClass名を取得する処理に影響が出ます。

  • 5.1でClass名を取得できた「Asset Class Path | Asset Name」が無くなりました
  • Class Nameは「None」を返すのでClass名は取得できない

UE5.1でMaterialをリネームする処理を作成する

[/Game/Materials]にある「Material」と「MaterialInstance」の「Material」のみリネームするEUWのボタンを作成します。

ボタンの処理は以下のようなBlueprintを実装します。

ボタンをクリックすると「Material」のみ「M_Material」にリネームされます。

「AssetData構造体」の中身を調べるようなPrintStringを実装します。

次のような結果が出力されます。

Package Name                    : /Game/Materials/SampleMaterial
Package Path                    : /Game/Materials
Asset Name                      : SampleMaterial
Asset Class                     : None
Asset Class Path | Package Name : /Script/Engine
Asset Class Path | Asset Name   : Material

「GetAssetRegistry」のFunction「Get Assets by Path」では指定したフォルダのAssetに関する情報が入っている「AssetData構造体」の配列が取得できます。

「Asset Class」には「None」が入っています。 「Asset Class」の代わりとなるのが、Asset Class Path構造体の「Asset Name」になります。 処理をAsset Class Path構造体の「Asset Name」でクラス名を判定するように変更します。 「Asset Name」が「Material」か判定すれば、「Material」のみを処理できます。

アセット レジストリ

エディタによるアセットの検出方法およびロード前のアセットタイプ情報の収集方法

EUWでContentsBrowser内のAssetを処理するのに必須といいほどのAsssetData構造体ですが、UE5で構造体の作りがUE5.0からUE5.1で変更がありましたが、UE5.2でも「Asset Class Path」ピンの中身が変更になったのでClass名の取得方法に変更がありました。

UE5.2にアップデートして不具合に対応する

UE5.2にプロジェクトをアップデートする

UE5.1にプロジェクトをアップデートするために、.uprojectファイルのバージョンを変更します。

.uprojectファイルを右クリック -> Switch Unreal Engine Version… -> UE5.2を選択 -> OKをクリック

プロジェクトを開きなおすとUEのバージョンがUE5.2に変更されています。

「EUW_Rename」を開いてCompileすると「構造体を再びBreakしてください」というような内容の警告が表示されます。

「AssetData」構造体の「Asset Class Path」ピンをBreakして「Top Level Asset Path」構造体を確認すると、構造体の変数が変更されていることが分かります。

「Top Level Asset Path」構造体の変数に変更があったため、5.1で実装したClass名の判定処理が使用できなくなります。

新しくなった「Top Level Asset Path」構造体の変数を含めて「AssetData」構造体の中身を確認します。

次のような結果が出力されます。

Package Name                   : /Game/Materials/M_Material
Package Path                   : /Game/Materials
Asset Name                     : M_Material
Asset Class                    : None
Asset Class Path | Path String : /Script/Engine.Material

Class名を取得する2つの方法

Class名を取得する方法は2つあります。

  • Path情報からファイルの拡張子としてClass名を取得する
  • AssetData構造体から「GetClass」ノードでClass名を取得する

「Asset Class Path | Path String」でClassのPath情報が取得できます。 Path情報からファイルの拡張子としてClass名を取得できます。 StringのSplitノードから「Extension Part」で拡張子が取得できます。

「AssetData」構造体から「Get Class」ノードを呼び出し、「Get Class Display Name」を呼び出すとClass名を取得できます。

PrintStringでClass名を出力できるか確認します。

次のような結果が出力されます。

Package Name                                    : /Game/Materials/M_Material
Package Path                                    : /Game/Materials
Asset Name                                      : M_Material
Asset Class                                     : None
Asset Class Path | Path String                  : /Script/Engine.Material
Asset Class Path | Path String | Extension Part : Material
Get Class | Get Display Name                    : Material

Class名の判定処理を修正します。

5.2でもClass名を指定してリネームできました。

「AssetData」構造体の「Get Class」ノードは5.0から存在するので、Class名を取得したい場合は「Get Class」ノードから取得した方が今後のアップデートにも対応できそうです。

引き続きバージョンアップによる不具合についてはBlogの方で更新します。

関連記事

UE5 [EUW]5.1のAssetData構造体の変更対応について

UE5 [EUW]5.1のAssetData構造体の変更対応について

UE5.1のAssetData構造体の変更対応について 5.1からAssetData構造体の作りが変わりました。 5.0から5.1にプロジェクトをアップデートする際には、「EUWでAssetDataを使っている処理」について見直してください。 大きく以下の2点のエラーが発生します。 メンバー変数「ObjectPath」が無くなったことで使用しているとエラーになる Class Nameが「None」を返すのでClass
UE5から追加された新Widget ComboBox(Key)

UE5から追加された新Widget ComboBox(Key)

ComboBox(Key)について UE5からComboBox(Key)が追加されました。 公式ドキュメントにもフォーラムにも使用方法が書かれていなかったので調査してみました。 ComboBox(Key)ではComboBoxのItemにWidgetを使用できます。 アイコンとTextを持ったUserWidgetをItemにするサンプルを紹介します。 ComboBox(Key)の使い方について 今回はEdito