リダイレクタ

移動したアセットの参照を現行位置へリダイレクトするためにパッケージに置かれるオブジェクト

Unreal Engine (UE) でアセットを移動したり名前の変更をすると、元の位置に リダイレクタ が残されます。これは現時点で読み込まれていないものの、このアセットを参照するパッケージが変更先を検出するためのものです。

プロジェクトの初期段階で一貫した命名方法を選択することで、リダイレクトで発生する問題の多くを回避することができます。アセットの命名方法のガイドラインは「アセットの命名規則に関する推奨事項」を参照してください。

コンテンツ ブラウザでリダイレクタを表示する

コンテンツ ブラウザでリダイレクタを表示するためのフィルターは 2 つあります。

  • [Filter] > [Other Filters] > [Show Redirectors] を選択すると、コンテンツ ブラウザでリダイレクタを表示させることができますが、その他のアセット タイプの絞り込みはされません。

    Access the Show Redirectors filter from the Other Filters category

  • [Filter] > [Miscellaneous] > [Redirectors] を選択すると、他のフィルタと同様にコンテンツ ブラウザにリダイレクタのみを表示します。

    Access the Redirectors filter from the Miscellaneous category

Unreal Editor でリダイレクタをクリーンアップする

リダイレクトを削除して、アセット参照がアセットの新しい場所をターゲットにするようにするには、リダイレクトを右クリックして、[Fixup] を選択します。この操作により、リダイレクタを参照しているすべてのパッケージを再保存し、リダイレクタを参照しているすべてのものを再保存できた場合は、リダイレクタはクリーンアップされます。

ResavePackages コマンドレットを使用してリダイレクタを除去する

また、ResavePackages コマンドレットで -FixupRedirectors オプションを指定して実行すると、プロジェクト内のすべてのリダイレクトをクリーンアップすることができます。以下はコマンドラインの例です。

    UnrealEditor.exe <GameName or uproject> -run=ResavePackages -fixupredirects -autocheckout -projectonly -unattended

このバージョンのコマンドラインでは、バージョン管理システムから修正する必要のあるすべてのファイルをチェックアウトし、ユーザーのローカルマシン上でそのリダイレクタをクリーンアップします。その後、ユーザーがそれらをサブミットする必要があります。-autocheckin は自動処理で使用することができ、ファイルをチェックインしてくれることもあります。

Caveats

名前の変更

オブジェクトを作成して名前を変更した後に、元のオブジェクト名と同じ名前で新規にオブジェクトを作成するとエラーが発生します。理由は最初のオブジェクトの名前変更時にリダイレクタが作成されたからです。リダイレクタとリソースは同じ名前を持つことができません。

ダングリング リダイレクタ

リダイレクタには以下のように再現可能な既知の問題がいくつかあります。

シナリオ 1

  • オブジェクト A を B に名前変更します。

  • オブジェクト B を削除します。

  • オブジェクト B が使用中のため削除できませんというエラーメッセージが表示されます。この問題は名前変更時に作成されたリダイレクタがまだ B をポイントするため発生します。

シナリオ 2

  • オブジェクト A を B に名前変更します。

  • オブジェクト B の名前を A に戻します。

  • オブジェクト A を削除します。

  • 最初の名前変更時に作成されたリダイレクタは破壊されますが、新たなリダイレクタが B に作成されます。結果としてオブジェクト A は参照されているため削除することができません。

エディタからリダイレクタを修正するか、削除する前にSavePackages するとこの問題が解決します。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル