Choose your operating system:
Windows
macOS
Linux
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\
) は、クックおよびパッキング中に「素晴らしいこと」がいろいろできます。