現在以下の対応について調査を進めております。
・元々GameFeatures以下に配置していたコンテンツ(ソースファイル含む)を、新UEプロジェクトのプロジェクト直下のコンテンツに移行したい
例となりますが、「MyGame」というGameFeatures内のプラグインとして作成していたものを、MyGame自体を新UEプロジェクトの本体として作成しなおすような対応となります。
この場合に元々MyGame内にあったアセットやソースファイルを新UEプロジェクト側に移行する場合に、アセットやソースファイルの参照を新プロジェクトでも整合性を合わせる方法として有効な手段はありますでしょうか。
調査しているなかで「CoreRedirects」の「PackageRedirects」が該当しそうな情報を掴んだのですが、こちらを設定しても新プロジェクト側でWidgetなどで指定されている親クラスが見つからないエラーが発生しております。
https://dev.epicgames.com/documentation/en\-us/unreal\-engine/core\-redirects\-in\-unreal\-engine\#nameflexibilityandspecificity
こういったユースケースに当たってUE上での適切な手順がありましたら伺えますと幸いです。
何卒よろしくお願いいたします。
お世話になっております。
はい。一般的に、GameFeaturesプラグインのコンテンツを新しいUnrealEngineプロジェクトに移行しても、参照を維持することは可能です。ただし、プロジェクトの規模が大きい場合や構成が複雑な場合は、少し手間がかかることがあります。とはいえ、基本的な手順は次のとおりです。
まず、アセットをContentBrowserから移行します。元のプロジェクトで、プラグインのコンテンツフォルダ内のアセットを右クリックし、「AssetActions>Migrate」を選択します。新しいプロジェクトのContentフォルダを移行先として指定します。これにより、依存関係を含めてアセットがコピーされ、参照も維持されます。
次に、ソースファイルを移動します。プラグインのSourceフォルダを新しいプロジェクトのSourceディレクトリにコピーします。Build.csと.Target.csファイルを更新し、モジュールを.uprojectに追加して、コードが正しく登録されるように再コンパイルします。
その後、CoreRedirectsを設定します。DefaultEngine.iniに、古いパスやクラス名を再マッピングするリダイレクトを追加します。
「ParentClassNotFound」というエラーが発生した場合は、ネイティブクラスが正しくコンパイルおよびロードされているか確認してください。問題が解決しない場合は、該当するブループリントを再設定するか、モジュール名やフォルダ構成を確認してください。失われた参照を修正するために必要であれば、一時的にブループリントを削除して再設定してください。
最後に、リダイレクタを整理します。ContentBrowserでリダイレクタを表示し、FixUpRedirectorsを実行してください
UnrealEditor.exe.uproject-run=ResavePackages-fixupredirects
まとめると、アセットの移行、ソースコードの移動、リダイレクトの設定、コンパイル、ブループリントの確認、リダイレクタの修正という流れになります。この手順を踏むことで、アセットやクラス参照の整合性を保ちながら、GameFeaturesプラグインを単独のUnrealEngineプロジェクトへ円滑に移行することができます。
場合とプロジェクトの規模によってややこしくなる可能性があります。その時に具体的な問題を教えていただけたらお手伝いさせていただじます。
お手数ですが、よろしくお願いします。
ご回答ありがとうございます。
こちらでアセットの移行手順を正しく理解しておらず、「AssetActions>Migrate」を行うことで概ね対処できる状態となりました。
迅速に対応いただきありがとうございました。