【UE5】コアリダイレクト(Core Redirect)を使ったクラス名の変更
こんにちは。
情熱開発部プログラム3課の日髙です。
厳しい暑さが続いておりますが、皆さまいかがお過ごしでしょうか。
今年から、気象庁では40度以上になる日を「酷暑日」と呼ぶようになったそうです。
今回はUE5のコアリダイレクトについてご紹介します。
動作環境
UE5.8.0
コアリダイレクト(Core Redirect)とは
UEで開発中にクラスや関数などの名前を変更すると、ブループリントなどのアセットがそれらを参照できなくなり、エラーが起きたり、データが消えてしまうことがあります。
そのような問題を防ぐ仕組みがコアリダイレクト(Core Redirect)です。
コアリダイレクトの使い方
コアリダイレクトは DefaultEngine.ini の [CoreRedirects] セクションに記載します。
コアリダイレクトの種類
コアリダイレクトは6種類あり、変更する対象によって使い分けます。
| ClassRedirects | クラス |
| StructRedirects | 構造体 |
| FunctionRedirects | 関数 |
| PropertyRedirects | 変数 |
| EnumRedirects | 列挙型 |
| PackageRedirects | アセットやプラグイン |
今回は ClassRedirects を使ってクラス名をAOldActorからANewActorに変更する例を紹介します。
クラス名の変更
まずはソースコード上でAOldActorをANewActorに変更します。

この時点でエディタを開くと、AOldActorを親に持つブループリントがエラーになる等、AOldActorを参照していた箇所で問題が発生します。

コアリダイレクトの適用
アセットがAOldActorをANewActorに置き換えられるように、コアリダイレクトを追加します。
DefaultEngine.ini に以下のように記載します。
クラス名はエディタ上で表示される名前を指定するため、先頭の 「A」 は入れません。
[CoreRedirects]
+ClassRedirects=(OldName="OldActor", NewName="NewActor")
コアリダイレクトが正しく設定されていれば、エディタを再起動するとAOldActorを使用していた箇所のエラーが解消されます。
コアリダイレクトの適用タイミングと削除について
コアリダイレクトが適用されるタイミング
エディタを開いた直後は、まだアセットがAOldActorを参照したままになっています。
コアリダイレクトはアセットがロードされた時に反映されます。
更新された情報はまだアセットに保存されていないので、エディタを閉じる前に保存しておきましょう。

アセットの再保存
コアリダイレクトによる更新を適用するには、対象になるアセットを全て再保存する必要があります。
例えば、以下のような方法で再保存することができます。
・対象のアセットを右クリックして「保存」。
・フォルダを右クリックして「すべてを再保存」。
・ResavePackages Commandletを使う
コアリダイレクトの削除
対象アセットをすべて再保存した後は、コアリダイレクトを削除しても問題ありません。
DefaultEngine.iniに記載した以下の行を削除します。
+ClassRedirects=(OldName="OldActor", NewName="NewActor")
コアリダイレクトの対象のアセットがすべて正しく再保存されていれば、コアリダイレクトを消しても問題はありません。
まとめ
コアリダイレクトは、リファクタリング時のクラスや関数名の変更を安全に行うための便利な機能です。
ただし、名前の変更はアセットを再保存するまで保存されないことには注意が必要です。
利用する際は以下の手順で進めることをおすすめします。
1.名前の変更、コアリダイレクトの記載
2.アセットの再保存
3.コアリダイレクトの削除
また、svnなどのバージョン管理を使用している場合は、再保存したアセットのコミット忘れにも注意しましょう。
【免責事項】
本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。