【UE5】プロジェクトのビルドは通るのに、プラグイン単体のパッケージ化が通らない時

記事執筆時Unreal Engineバージョン:5.2

問題

VisualStudioから、プラグインを含むプロジェクトをビルドする⇒問題なく成功、プラグインも動作する
Unrealエディターから同プロジェクトをパッケージ化⇒問題なく成功、プラグインも動作する
Unrealエディターからプラグインのタブでプラグイン単体をパッケージ化⇒パッケージ化に失敗する(今回の問題点)

解決法

エディターでアウトプットログを確認すると、使用しているクラス・関数等が未定義のエラーが発生。
(状況により差があります)
不足しているヘッダーをインクルードする事で解決する。

概要

OX ENGINEER STUDIO クライアントエンジニアの吉川です。

VisualStudioやUnrealエディターからプロジェクト自体のビルドは出来ていても、プラグイン単体をパッケージ化(ビルド)してみると、失敗する場合があります。
上記の解決法の通り、エラー自体はプラグインでなくても普通に実装中に起きるような内容なので、解決するのは何も難しくないかと思います。

原因

プロジェクトのビルドやパッケージ化と違い、モジュール化されているプラグインをビルド・パッケージ化する際は他のモジュールを参照している場合にエラーとなるようです。
UnrealEngineのモジュール


例えば空のプラグインを作成し、StartupModule内でGLog->Logfを使用してみます。
デフォルトのLoadingPhaseでは、モジュールが読み込まれた後にエディタのアウトプットログにログが出力されます。

空のプラグインのStartupModuleにGLog->Logfによるログ出力を追加

GLog->Logfで[[[Plugin_A test log]]]とログ出力を行っている図

必要なヘッダーがインクルードされていないままGLog->Logfを使用した状態でVSでビルドやプロジェクトのパッケージ化を行ってもエラーは発生しませんが、プラグインのパッケージ化を行うと使用している行でエラーが発生します。
該当行のエラーを見てみるとFOutputDeviceRedirectorが未定義となっています。
(error C2027: use of undefined type ‘FOutputDeviceRedirector’)
FOutputDeviceRedirectorのリファレンスを見ると、ModuleはCoreとなっています。
このモジュールはデフォルトでPluginName.build.csでPublicDependencyModuleNamesに追加されていますが、これによって通常時のビルドは通るものの、単体のプラグインビルド時には作用せずエラーとなります。
(エディターのアウトプットログへの出力は基本的にUE_LOGが推奨されている為、意図がない場合はUE_LOGを使用しましょう)


AActorを引数とする関数を作成しても同様で、AActorのModuleはEngineとなっています。
これもデフォルトで.build.csでPrivateDependencyModuleNamesに追加されていますが、こちらもプラグインのパッケージ化にはエラーとなります。
(error C2061: syntax error: identifier ‘AActor’)(例ではAActorを引数とする関数を作成)

AActorを引数とする関数の追加(内容は空)

余談

DependencyModuleNamesを追加する場合のPublic~/Private~の違いについては、モジュールについての公式ドキュメントにも書いてある通り、モジュールを使用しているのがパブリックであればPublicに(パブリックな.h等)、プライベートであればPrivateに(.cpp等)、モジュール名の追加を行います。
UnrealEngineのモジュール – プライベートおよびパブリックの依存関係

Engine/Engine.hをインクルードする事でも解決しますが、不要なヘッダーも取り込まれてしまう為、極力は必要な物のみ指定しましょう。

関連記事

  1. 【UE5】Live Codingでビルドする際の注意点

    2023-12-01

  2. 【UE5】プレビューを停止すると「Assertion failed: bRegistered」とエラーメッセージが出てエディタが強制終了する現象

    2024-02-08

  3. 【UE5】Unreal Insightsを使ってみた

    2024-03-21

  4. 技術ブログ開始のご挨拶

    2023-10-17

ABOUT

OX ENGINEER STUDIO

OX ENGINEER STUDIO並びにC&R CREATIVE STUDIOSの紹介サイトです。
本サイトでは、ゲーム開発や弊社スタジオに関する様々な情報を発信しています。

運営:
OX ENGEINEER STUDIO

所属:
C&R Creative Studios

カレンダー

2024年4月
1234567
891011121314
15161718192021
22232425262728
2930  
ページ上部へ戻る