忍者ブログ

非現実的な話

ゲーム、UnrealEngine4などの話題を取り扱います。取り扱う内容は個人の範囲で調べたものなのでご利用は自己責任でお願いします。

【UE4】MacroLibraryとFunctionLibraryの件

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

【UE4】MacroLibraryとFunctionLibraryの件


本日はマクロについてです。
マクロにはいくつか種類がありますが、特性が割と似ているので正しく使い分ける必要があります。

【概要】
公式ページより
https://www.unrealengine.com/ja/blog/blueprint-macros-and-macro-libraries

【分類】
●BlueprintFunctionLibrary
 どこからでも呼び出しできる


●BlueprintMacroLibrary
 継承クラスから呼び出しできる


●独自macro(LocalMacro)
 自Blueprint内であれば、どの場所からでも呼び出しできる
 LevelBlueprint、ClassBlueprint内で独自に作成できる



で、それぞれの使用例。


【マクロの特性】
・関連するBluePrintを変更してもCompileする必要がない
 (ただし、変更の影響は受けるので再保存する必要はある)



いずれも似たような振る舞いとなります。
MacroLibraryと独自Macroの振る舞いはほぼ同じようですが、FunctionLibraryとMacroLibraryは厳密には結構違うようです。では、それぞれの違いはどこにあるのか。AnswerHubに公式回答があったのでざっくり和訳してみました。

●FunctionLibraryとacroLibraryについて
https://answers.unrealengine.com/questions/30834/whats-the-difference-between-blueprint-macros-and.html


【違いまとめ】
 ・BlueprintFunctionLibrary
  →親クラスを指定しない(必ずUBlueprintFunctionLibraryの継承クラス)
  →出力が1つ
 ・BlueprintMacroLibrary
  →親クラスを指定する
  →出力が複数

【例えばこういうこと】
 ●10台の車を作る場合…
  「FunctionLibrary」は1工場を10回使って10台の車を作る
  「MacroLibrary」は10工場を1回使って10台の車を作る


すごく分かりやすい例えです。MacroLibraryは「置き換え」が主であるのに対し、FunctionLibraryは「関数」である点が違います。



また、ソースコードにも「BlueprintFunctionLibraryは静的処理を推奨、動的なことはさせないこと」とコメントがありました。つまり、どこでも呼べるので、Global変数のような扱いは推奨しないよ(いつでも変更、どこでも変更はヨクナイ)ということ。


以上、違いについて。
ここからは昨日話題にあげたDelay関連。

・BlueprintFunctionLibrary
 →Delay使用不可

・BlueprintMacroLibrary
 →Actorクラス継承であれば関数内であってもDelayを使用可
 →Objectクラス継承だと使用不可

FunctionLibraryはあくまで関数なので使用できません。
一方、MacroLibraryはObjectクラス継承だと使用できず、Actorクラス継承だと使用できます。
なぜかというと、

→DelayはUKismetSystemLibraryクラスのメンバ関数
→UKismetSystemLibraryは、UBlueprintFunctionLibraryの継承クラス
→UBlueprintFunctionLibraryは、UObjectの継承クラス

つまり、UObject継承クラスのMacroではDelayを使用できないということです。


以上、MacroとDelayの関連についてでした。

コメント

プロフィール

UnrealEngine4について調べる。
ゲームはそんなに得意ではない。

ブログ内検索

カレンダー

08 2017/09 10
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

リンク

  • [PR]
    PR