[UE4/UE5] BPアセットのプロジェクト移行について(CoreRedirects)

はじめに

プロジェクトAからプロジェクトBへアセットを移行する際の備忘録です。

参考にさせて頂いた情報

ウィジェットブル―プリントを例に書いていきます。
基本的には上記の Qiita に手順が記載されているので

  1. C++ファイルをコピペ

  2. VSプロジェクトを更新

  3. ヘッダーファイルを修正

  4. コンパイル

この辺は割愛させて頂きます。


前提

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」クラスになっています。

もしサポート頂けたら いつか個人開発をする時に使わせて頂きます!