概要
UE4でアプリをパッケージ化する際に
実際のアプリでは使用しないエディター用のコードをパッケージに入れたくない時があります。
この問題を解決する方法として今回はモジュールを分割する方法を紹介します。
1.エディター用のモジュールを作る
新しいモジュールのフォルダを元からあるモジュールのフォルダをコピペしてSourceの直下に作ります。
今回はモジュール名をMyProjectEdにしています。
作ったフォルダに最低限必要なコード MyProjectEd.Build.cs MyProjectEd.cpp MyProjectEd.h を用意します
ファイルの中身も全て新しいモジュール名でリネームを行います。
(デフォルトから存在するモジュールからコピーしてリネームするのが安全)
2.作ったモジュールをビルドの対象にする
エディターのみ追加されてほしいモジュールの場合〇〇Editor.Target.csが
エディター起動時用なのでこちらに作ったエディターのみ使用したいモジュール名を追加
MyProjectEditorTarget.cs
public class MyProjectEditorTarget : TargetRules
{
public MyProjectEditorTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
ExtraModuleNames.AddRange( new string[] { "MyProject" , "MyProjectEd" } );
}
}
3.最後にGenerate VisualStudio project filesを実行
MyProject.uprojectの右クリックメニューからGenerate VisualStudio project filesを実行し、ビルドをすれば完成
気を付けたい事
エディター用のモジュールでランタイム用のモジュールを使用したい場合は
エディター用のBuild.csのDependencyで参照する対象のModuleを指定する必要があります。
※これをしていないとエディター用のソースからパッケージ用のソースをインクルードした時エラーがでます。
まとめ
エディター拡張に必要なUnrealEdをRuntime用のモジュールに含めたままだとパッケージが作れない問題が起きたりするので、
エディター拡張を行う場合は必要になりそうです。