Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 自作プラグインでC++のホットリロードを行う

2018年初の更新となります。

先月はイベントや仕事で忙しくなりすぎてほとんど更新できずでしたが、今年はマイペースにぼちぼち更新していきたいと思います。

今年一発目のネタはC++を使った自作プラグインでホットリロードを行う方法についてです。

通常の場合、プラグインC++コードを書き換えるとエディターを落とさなければ更新を行うことができません。これは非常に不便ですが実はちょっとした手順を加えるだけでエディターを実行したままリロードを行うことができます。

具体的な手順といってもやるべきことは非常に単純です。今回はUE4.18.2の日本語バージョンを使用しています。

モジュール単位で読み込みを行う

通常UE4はモジュールと呼ばれるプログラムの単位でコンパイル処理を行っています。このモジュールがあるおかげでホットリロードなどの機能が実現しています。

ただし、通常のエディター上部にあるツールバーの"コンパイル"ボタンからの場合、ホットリロードは行われません。

f:id:alwei:20180107223217p:plain

これはこのボタンを押してもゲーム内のモジュールしかコンパイルされていないことが原因です。プラグインはゲーム内のモジュールではないため、通常のコンパイルボタンではリロードされません。

そこでモジュール単位での読み込み、もといコンパイルを行います。

メニューから"ウィンドウ"→"デベロッパーツール"→"モジュール"を選択してください。

f:id:alwei:20180107223609p:plain

これでモジュール一覧のウィンドウが表示されます。自作プラグインもこの中でモジュール化されているはずです。

f:id:alwei:20180107223710p:plain

検索から自作プラグインを探しだします。あとはこの中にある、"再コンパイル"ボタンを押すと、リロードができるようになります。

実際に再コンパイル→リロードしてみる

実際にリロードした動画を作ったのでそちらを観てみてください。

www.youtube.com

ブループリント関数ライブラリーと、Slateを使ったスタンドアローンウィンドウのリロードが上手くできています。

f:id:alwei:20180107224146p:plain

Slateのウィンドウはポーリングされているわけではないので、自分で一度開き直す必要がありますが、これで問題なくリロードができたということがわかりました。

UE4プラグインやエディター拡張はハードルが高いと思われがちですが、通常のC++コードが書ける人であればそこまで難易度が高いわけではありません。エディター拡張など、小規模では不要でも大規模では必ず必要になってくるので、覚えておいて損はありません。ぜひ挑戦してみて、色々なことに活用してみてください。