Unreal Automation ツールでビルドする
Unreal Automation ツールでのビルド中にコマンドラインからブループリントをネイティブ化するには BuildCookRun コマンドラインに -nativizeAssets スイッチを追加します。
ヘッダ宣言
ネイティブ化されたブループリントは、別の新しいモジュールに格納されます。つまり、ゲームプレイ モジュールのヘッダは、オリジナルのモジュール以外でも使用が可能になります。 すべてのヘッダが、使用中のすべてのクラスと構造体を、インクルード ヘッダもしくは前方宣言として宣言していることを確認してください。
不足ヘッダの修正
多くのプロジェクトには "修正型" ヘッダである [GameName]/[GameName].h あるいは [GameName]/Public/[GameName].h のいずれかが付いています。
- このヘッダのパスを
DefaultEditor.iniの[BlueprintNativizationSettings]のFilesToIncludeInModuleHeaderに追加すると、 ヘッダ不足が原因の問題をほぼ解決することができます。
コード連携の促進
手書きのコードとネイティブ化したコード間の連携の信頼性と効率を促進するために、いくつかの制約が発生します。これを念頭に置いて、 以下のインプリメンテーションはサポートされていません:
BlueprintPureあるいはBlueprintCallableとしてマークされた Private 関数および Protected 関数noexport構造体およびクラスBlueprintVisibleタグ、またはEditableタグのあるビットフィールド変数- Private ビットフィールド変数
UBlueprintGeneratedClass、UUserDefinedStruct、UUserDefinedEnum変数 (もしくはそれらをベースにした変数型)
技術的な詳細
コンパイル エラーまたはリンク エラー (LNK1000 や LNK1248) になった場合、ブループリント タイプまたは特定のブループリントを DefaultEngine.ini 設定ファイルから排除して、
プロジェクトでネイティブ化したブループリント数を減らしてみてください。ブループリントを変換対象から除外する方法は、
ブループリントのネイティブ化 を参照してください。
以下のモジュールでは、ブループリント ネイティブ化の処理の仕組みが分かります。
BlueprintCompilerCppBackendモジュール (格納場所:Engine\Source\Developer\BlueprintCompilerCppBackend\) はブループリント記法のツリーを C++ に変換します。BlueprintNativeCodeGenモジュール (格納場所:Engine\Source\Developer\BlueprintNativeCodeGen\) は、クックおよびパッキング中に「素晴らしいこと」がいろいろできます。