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

ゲームプレイ要素をブループリントに公開するテクニカル ガイド (ゲームプレイ プログラマー向け)

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

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

技術的な詳細

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

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

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

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

タグ
Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信