[UE4/UE5] BPアセットのプロジェクト移行について(CoreRedirects)
はじめに
プロジェクトAからプロジェクトBへアセットを移行する際の備忘録です。
参考にさせて頂いた情報
ウィジェットブル―プリントを例に書いていきます。
基本的には上記の Qiita に手順が記載されているので
C++ファイルをコピペ
VSプロジェクトを更新
ヘッダーファイルを修正
コンパイル
この辺は割愛させて頂きます。
前提
UE4.26 のプロジェクトで作成した「HogeProject」のウィジェットブル―プリントを UE5.3 のプロジェクト「FugaProject」に移行したい。
HogeProject 用の「UserWidget」「TextBlock」「Image」「Button」クラスを作成し、それを利用した WBP が上記の画像です。
手順
アセットの移行
BPアセットを右クリックして(今回の場合は「HogeWidget」)
[アセットアクション - 移行] で移行したいプロジェクトの「Content」フォルダを選択(今回の場合は「FugaProject」)
これで「FugaProject」へ持って来れました。
ちなみにプロジェクトは「ThirdPerson」のテンプレートを利用しています。
何もしてない状態でアセットを確認してみる
単にアセットの移行だけを行い、C++クラスを移行していない場合を見てみます
アセット自体は存在していますが、さてどうでしょう。
開こうとしてもエラーメッセージが表示されて開く事ができません。
C++ ソースコードだけ移行した状態でアセットを確認してみる
C++ のソースコードを持ってきて、ビルド・実行を行った上で、再度見てみます
先程と同じ状況です。
DefaultEngine.ini の設定を行う
DefaultEngine.ini に以下を追加して、再度エディターを起動し直します
[CoreRedirects]
+ClassRedirects=(MatchSubstring=True,OldName="/Script/HogeProject",NewName="/Script/FugaProject")
その状態で再度確認します
コンテンツブラウザ上で見た感じは変わっていません。
ただ、先ほどはエラーになって開けなかったのが開けるようになりました!
以上で移行完了です!🎉
おまけ
[CoreRedirects]
+ClassRedirects=(OldName="HogeUserWidget",NewName="/Script/UMG.UserWidget")
+ClassRedirects=(OldName="HogeButton",NewName="/Script/UMG.Button")
+ClassRedirects=(OldName="HogeImage",NewName="/Script/UMG.Image")
+ClassRedirects=(OldName="HogeTextBlock",NewName="/Script/UMG.TextBlock")
各クラスを個別に指定したり
一旦 UE 標準のクラスに直す場合はこんな感じ
これが以前の設定の状態。
テキストが「HogeTextBlock」クラスになっているかと思います。
新しい設定にした場合がこちら
テキストが UE 標準の「TextBlock」クラスになっています。