Language:
Page Info
Tags:
Skill Level:
Engine Version:

高度なブループリントのネイティブ化

Prerequisite Topics

This page assumes you have prior knowledge of the following topics. Please read them before proceeding.

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 ビットフィールド変数

  • UBlueprintGeneratedClassUUserDefinedStructUUserDefinedEnum 変数 (もしくはそれらをベースにした変数型)

技術的な詳細

コンパイル エラーまたはリンク エラー (LNK1000 や LNK1248) になった場合、ブループリント タイプまたは特定のブループリントを DefaultEngine.ini 設定ファイルから排除して、 プロジェクトでネイティブ化したブループリント数を減らしてみてください。ブループリントを変換対象から除外する方法は、 ブループリントのネイティブ化 を参照してください。

以下のモジュールでは、ブループリント ネイティブ化の処理の仕組みが分かります。

  • BlueprintCompilerCppBackend モジュール (格納場所: Engine\Source\Developer\BlueprintCompilerCppBackend\) はブループリント記法のツリーを C++ に変換します。

  • BlueprintNativeCodeGen モジュール (格納場所: Engine\Source\Developer\BlueprintNativeCodeGen\) は、クックおよびパッキング中に「素晴らしいこと」がいろいろできます。

Tags