この記事のおまけとして、エディタ用ゲームモジュールを作ってみます。
エディタ用ゲームモジュールとは?
エディタ用ゲームモジュールとは、**エディタビルド(Development Editor などの Editor の付くビルド)**では読み込まれるけど、**スタンドアローンビルド(Development ビルドなどの Editor の付かないビルド)**では読み込まれないゲームモジュールのことです。(UE4 用語ではないので、ご注意を。)
この方法は UE4 で用意されているプラグインでも行われていて、ゲームアプリ側でもエディタ拡張などを入れたい場合に使えるかと思います。
エディタ用ゲームモジュールを作ってみる。
この記事で作った、LocalizationSample をエディタ用ゲームモジュールにしてみます。
~.Target.cs の書き換え
Source/UE4Samples.Target.cs を開いて・・・
OutExtraModuleNames.AddRange( new string[] { "UE4Samples", "LocalizationSample" } );
これを以下のように変更します。
OutExtraModuleNames.AddRange( new string[] { "UE4Samples" } );
これでスタンドアローンビルドの際は LocalizationSamples がビルドされないようになりました。
~.uproject の書き換え
UE4Samples.uproject を開いて・・・
{
"Name": "LocalizationSample",
"Type": "Runtime",
"LoadingPhase": "Default"
}
これを以下のように書き換えます。
{
"Name": "LocalizationSample",
"Type": "Editor",
"LoadingPhase": "Default"
}
これで、LocalizationSample モジュールはエディタビルドの時のみ読み込まれるようになりました。
確認する
これで準備完了です。
確認方法ですが、破棄されたモジュールの情報がログとして出力されていますので、今回はそれを使います。
[2015.07.19-09.47.01:850][115]LogModuleManager: Shutting down and abandoning module LocalizationSample (82)
これが LocalizationSample モジュールが破棄された時のログです。
このログは Development Editor ビルドで実行した場合、エディタを終了すると出力されますが、Development ビルドで実行した場合、アプリを終了しても表示されません。
表示されないということは、モジュールの破棄が行われていない、つまりはモジュールが読み込まれていないということになります。
確認方法はこの他に・・・
- モジュールクラス(FDefaultGameModuleImpl を継承したクラス)の StartupModule 関数にログを仕込む。
- ↑ の関数にブレークポイントを仕込む。
などがあります。