9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[UE4]BPノードのコンパイルオプション「デベロップメントオンリー」の挙動について

Last updated at Posted at 2019-09-24

2019-09-24_15h11_10.png
PrintStringや、右クリックからのコンパイルオプションでの「デベロップメントオンリー」なノードで除外した際のフローについて調べました。

個別の検証を書いていますが、挙動の結果のみ必要な方は「まとめ」項へ→
間違ってたらごめんなさい。

UE4.22.3で検証

はじめに

右クリックからのコンパイルオプション操作をするには実験的機能を有効化する必要があります。
2019-09-24_15h06_40.png
エディターの環境設定の「ブループリントエディタ」→「Allow Explicit Impure Node Disabling」
をONにすると冒頭のコンパイルオプション設定が行えるようになります。

「デベロップメントオンリー」の条件

2019-09-24_15h52_54.png
パッケージを作る際の「Development」設定ではありません!
何なら出荷(Shipping)のパッケージでも除外されず動作しました。(4.22.3。何故……

2019-09-24_16h07_52.png
プロジェクト設定の「Cooker」→「Compile Blueprints in Development Mode」
がONだと、「デベロップメントオンリー」なノードが実行され、
OFFだと、「デベロップメントオンリー」なノードが除外されます。
またエディター起動の際はどちらでも実行されます。

configファイル的には、DefaultEngine.iniの下記になります。

[/Script/UnrealEd.CookerSettings]
bCompileBlueprintsInDevelopmentMode=False

除外された後のノードの処理について

探っていきます

関数ノード

  • SetActor*等や、デフォルトでデベロップメントオンリーなPrintStringのノード類
    2019-09-24_15h16_24.png
    そのノードのみスキップされて、後の実行ピンへと処理が流れていきます。
  • CastやAsyncLoad等のノード類
    2019-09-24_16h15_32.png
    そのノード以降処理が行われなくなります

マクロ

  • BranchやSequenceノード
    2019-09-24_16h17_43.png
    そのノード以降処理が行われなくなります

自作

自作マクロでもうちょっと条件絞ってみます。

  • 実行をスルーするだけのマクロ
    2019-09-24_16h19_21.png
    そのノードのみスキップされて、後の実行ピンへと処理が流れていきます。
  • Inputに実行ピンが2つあるマクロ
    2019-09-24_16h21_34.png
    そのノード以降処理が行われなくなります
  • Outputに実行ピンが2つあるマクロ
    2019-09-24_16h23_11.png
    そのノード以降処理が行われなくなります

挙動

挙動的に、Input/Outputどちらかの実行ピンが複数有ると以後の処理をカットするようです。
逆に1つずつだとスキップして以後の処理へ移るようです。おそらく。
2019-09-24_16h37_51.png
「デベロップメントオンリー」ではなく、「無効(コンパイルしないで)」にした時の
実行ピンの色の付き具合がそのまま処理の流れで合っていそうです。
(上の緑枠は実行ピンが明るく実行される。下の水枠は実行ピンが暗くなってて実行されない)

まとめ

  • ノード右クリックのコンパイルオプション「デベロップメントオンリー」は「Development」パッケージ設定ではないです!
    • プロジェクト設定の「Compile Blueprints in Development Mode」次第です
    • エディター起動だとどちらでも実行されます
  • 関数でもマクロでも、Input/Outputの両方の実行ピンが1つ以下だとそのノードのみをスキップ。
    2つ以上あると以後のノード処理を無効化。

のようです。
C++のMetaのDevelopmentOnlyは未検証です。

image.png
自分は挙動に余り自信がなかったので、C++で上のようなノード作って動的に分岐してたりしていました。
UObjectの無駄使いですが……

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?