UnrealEngine

ブループリントを C++ にクックする #UE4Study

More than 1 year has passed since last update.

ブループリントを C++ にクックする

参照

アンリアル 4.15 がリリースされました!
https://www.unrealengine.com/ja/blog/unreal-engine-4-15-released

C++の勉強になるかと思いブループリントから、C++のソースコードがどのように変換されるか試してみた。

高度なブループリントのネイティブ化
https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/TechnicalGuide/NativizingBlueprints/Advanced/index.html

ブループリント:BP_CookSampleを作成する

コンポーネント、変数、関数が変換されるように設定する

親:Actorのブループリント BP_CookSampleを作成する
image

コンポーネントにCubeを追加
検索した時に見つけやすい様に、絶対同じ名前にならないように設定した。
image

変数と関数を追加した。
関数のIN/OUTも設定した。
それぞれ検索に引っかかりやすい名前に設定した。
image

Nativezにチェックを入れる

  1. Class Defaults
  2. Packaging: Nativezにチェックを入れる

image

Project設定でPackagingのBlueprint Nativization Methodを設定する

  1. プロジェクト設定を開く
  2. Packagingを選択する
  3. Blueprint:Blueprint Nativization Method にInclusiveを設定する image

Windows(64bit)でパッケージング
image

outフォルダを作成して、OK
image

CPPに変換されたブループリントを探す

出力先を調べたが、何処にも見つからない
image

ビルドのログをテキストエディタにコピーする
image

BP_CookSampleで検索すると、BP_CookSample__pf2132744816.cppが見つかった。
そして少し上にプロジェクトパス\Intermediate\Build\Win64\BPCookCPP\Development\BPCookCPP.uhtmanifest

というコマンドがあったので、Intermediateフォルダ配下が怪しかった。
image

プロジェクトパス\Intermediate\WindowsNoEditor\NativizedAssets\Source\NativizedAssets\Private配下に、BP_CookSample__pf2132744816.cppを発見した

image

ヘッダもPublicフォルダに変換されていた。
image

どのように変換されたか確認してみる

コンポーネント:CubeCubeCube
image

関数:ABCDEF

関数名は bpf_巻子名pfという名前に変換される
引数名は bpp
引数名_pfという名前に変換される

足し算ノードは UKismetMathLibrary::Add_IntInt に変換された

image

image

変数名:IndexIndexIndex

変数名は bpv__変数名_pfという名前に変換された
image

指定したブループリントだけ変換する

BP_CookSample以外にも変換されている
image

  1. プロジェクト設定を開く
  2. Packagingを選択する
  3. Blueprint:Blueprint Nativization Method にExclusiveを設定する
  4. BP_CookSampleを追加する

image

Windows(64bit)でパッケージング
image

List Of Blueprint assets to nativizeに追加したブループリントと、以下の2ファイルが出力された
小さいプロジェクトだからわからなかったが、必要なブループリントだけ変換するとビルドが早くなるらしい

  • NativizedAssets
  • NativizedAssets_Dependencies

image