ロムノマ

ゲーム/ビジネス関連/雑記。自由きままに書いていきます。

【UE4】モジュール追加

あけましておめでとうございます。

UE4いじったり、ビルダーズ2クリアしてたら、

何気に間が空いてしまいました。

ロムすけです。

 

 

UE4エディタ中の、

デバッグ描画ってどうやるんだろー

サクッとなんか呼べば良いんだろう?

 

くらいに思ってたら、

全然ダメだった。

 

 

 

端的に言えば、

エンジンの拡張的な領域だった。

 

 

 

おもってたより全然大変じゃないか・・・

 

 

 

 

エディタ用の機能を作るにあたって、

調べているうちに、

エディタ用のモジュールを追加したほうが、

管理上も実装上もよさそう。。。

 

 

ということで、

デバッグ描画については後日また記載するとして。

 今回はモジュール追加について記載しよう。

 

 

 

モジュールとは

UE4C++はモジュール単位で、

ビルドが走り、モジュールごとにdllが生成される。

 

イメージとしてはC++ソース群のカタマリ。

用途ごとにカタマリ分けれます。

って感じかな。

 

複数のモジュールを作れるということで、

・今回は実際に開発するゲーム用モジュール

・エディタ用のモジュール

と切り分けてみる。

 

モジュール作るメリット

・単純に分類することで分かりやすい

 

・ビルド構成毎にロードするモジュール指定できる

ifded DEBUGとかでいちいちやる必要がない

 

今回のケース

エディタ用のデバッグ描画いれたい!

→まさにゲーム本編にはいらないエディタ用の機能なので、モジュール分けてそちらで開発を試みる。

 

モジュールの追加方法

".uproject"編集

プロジェクトのフォルダ配下に

.uprojectファイルがあると思う。これを編集する

これ編集とかしていいの??って思った。

良いんだよ!公式にも書いてあったぜ。

 

 

プロジェクト作成時は、

"Modules":

[

 {

  "Name":"MyProject",

  "Type":"Runtime",

  "LoadingPhase":"Default"

 }  

]

こんな感じ。

これがモジュールの設定みたい。

 

 

ここに追加したいモジュール設定を追記します。

"Modules":

[

 {

  "Name":"MyProject",

  "Type":"Runtime",

  "LoadingPhase":"Default"

 }  ,

 {

  "Name":"MyProjectEditor",

  "Type":"Editor",

  "LoadingPhase":"PostEngineInit"

 }   

]

こんな感じ。

一応それぞれの意味↓

Name:モジュールのユニーク名

Type:モジュールのタイプ

LoadingPhase:ロードするタイミング

 

LoadingPhaseが気になって調べたけど、

エディタ用モジュールなら、コレで良さそう。

エディタで使いたいGUnrealEdが生成されずにnullになっちゃうことがあるらしいので、エンジン初期化時に読み込むようにする。みたいなイメージ。

 

他の設定は以下公式リンクへ。

api.unrealengine.com

 

ソースの追加

フォルダ作成

プロジェクトのSourceフォルダ配下に、

MyProjectとか、自分でつけたプロジェクト名のフォルダがあると思う。

同様の場所に新規でフォルダ作成。

まぁMyProjectEditorとか適当に。

実際のソースの追加

これまた自分で、

MyProjectEditor配下に、

MyProjectで自動生成されるものと同様に3つのファイルを追加する。

 

MyProjectEditor.Build.cs
MyProjectEditor.cpp
MyProjectEditor.h

の3つ。

 

世の中、エライ人がたくさんいるので、

これらのファイルを作成してくれるバッチを作っている人もいるようです。

検索してみてもいいかも。

 

 

自分は勉強のためってこともあるし、

コピペで自作する方法でやってみました。

 

単純に、

MyProjectで同様のファイル。

MyProject.Build.cs
MyProject.cpp
MyProject.h

 これらが存在するので、

コピペしてファイル名を変更し、

実際の中身もモジュール名を置換すれば済む。

 

ビルドターゲットの指定

プロジェクトのSourceフォルダ配下に、

MyProjectEditor.Target.cs

が元々あると思う。そこに追記をする。

 

以下関数を、 

ExtraModuleNames.AddRange( new string { "MyProject", } );

↓このように

ExtraModuleNames.AddRange( new string { "MyProject", "MyProjectEditor" } );

 

こうすることで、

エディタ起動時に使用するモジュールを追加したことになり、

MyProjectEditorがビルド対象になるってことなはずだ。

 

最後にVSとの関連付け

MyProject.uprojectを右クリックして、

Generate Visual Studio project filesを実行する。

 

これ結構やることになるなぁ~と感じているところなので、

自戒ふくめ初心者の人は慣れたほうが良さそう。

 

友人と共有作業しているときも、あれ!?ビルドできない!

とかなったりするんだけど、これが抜けてたりする。

 

一応実機で確認

VSからデバッグ実行してみて、

 UE4のウィンドウ/デベロッパーツール/モジュール

で、いろんなモジュールがずらーーっとならんでいる。

そこに、さっき追加した

MyProjectEditor

がロードされていたらOKってこと。

 ----------------------------------------------------------

一応以上で、追加が完了!

 

エディタでデバッグ描画したかっただけなのに^^

苦しみは次回へ続く。