Choose your operating system:
Windows
macOS
Linux
マクロ ライブラリ は、他のブループリントへノードとして配置可能なマクロのコレクションや自己完結型のグラフを保持するコンテナです。実行とデータ転送の両方の入出力を備えた一般的に使用するノードのシーケンスを格納できるため、時間節約の手段となります。
マクロ ライブラリを作成する
このサンプルでは、Health 変数の追加に使用するマクロと、指定されたアクタのサイズ調整に使用するマクロの 2 つのマクロで構成されるマクロ ライブラリを使います。
ここでは スターター コンテンツ を有効にした状態で Blueprint Third Person Project を使います。
ブループリント の [コンテンツ ブラウザ] 内をどこか 右クリック して、Blueprint Macro Library を選択します。
[Pick Parent Class (親クラスを選択)] ウィンドウが表示されたら、親クラス (ここでは [Actor]) を選択します。
マクロ ライブラリに名前を付けて、その上で ダブルクリック して開きます。
[Blueprint Macro] インターフェースが表示されます。
右上の [MyBluprint] ウィンドウで、デフォルトのマクロ名の上で F2 を押して「 ScaleUp 」に変更します。
ScaleUp マクロの [Details (詳細)] パネルで、以下のように Inputs と Outputs を追加します。
ここでは Exec タイプの In というインプットと、 Actor タイプの_InActor というインプットの 2 つを作成しました。アウトプットは Out_ と追加し、タイプを **Exec** に設定しました。これらを使って、マクロで影響を与えたいアクタを判断します。
ScaleUp マクロのグラフ内に以下のようなノード ネットワークを再度作成します。
上図では、呼び出されたマクロは InActor と指定されたアクタを取得し、そのサイズを取得して 1.25 を乗じたものを Target (InActor と指定されているアクタ) に対する New scale 3D として設定します。このマクロを使って、どのアクタに対してもスケールを変更することが可能になりました。
[MyBlueprint] ウィンドウから 「AddHealth」 というマクロを追加します。
AddHealth マクロの [Details (詳細)] パネルで、以下のように Inputs と Outputs を追加します。
上図では、 GetHealth という float 値を受け取り、追加してから SetHealth_ の出力ノードに渡します。
AddHealth マクロのグラフ内に以下のようなノード ネットワークを再度作成します。
ここでは float 値が_GetHealth 値であれば 50 を追加してから、SetHealth_ へ結果値を出力します。
マクロ ライブラリを 保存 して閉じます。
「Content/ThirdPersonBP/Blueprints」フォルダで ThirdPersonCharacter ブループリントを開きます。
[MyBlueprint] ウィンドウで、Health を表す Float 変数を追加します (ここではデフォルト値は 0 のままにしておきます)。
イベントグラフ内に以下のようなノード ネットワークを再度作成します。
上図では、Q が押されると AddHealth マクロが呼び出され、 Health 値を受け取って (増加させるマクロ スクリプトを実行して) SetHealth の出力ピンで更新してから画面に表示します。次に E で、Health が 100 を超えているか確認してから、ScaleUp マクロを ThirdPersonCharacter であるアクタの Self 上に呼び出せるようにします。
コンパイル して、エディタで 再生 します。
画面のテキストが見えにくい場合は、映像を全画面表示にしてください。
このビデオではブループリント スクリプトがステップ 13 から含まれているので、スクリプトが発行される時が分かります。ScaleUp マクロを呼び出すために E を押す場合、デフォルトを 0 に設定した_Health 値をまず確認します。次に Q を押して、押すごとに Health 変数を増やす AddHealth マクロを呼び出します。数回押したら、再度 ScaleUp マクロを呼び出すと、Health_ 値があがって 100 を超えているので、呼び出しがされていることが確認できます。
これらのマクロは Health の入力と Target Actor が設定されていれば、どのブループリントからも呼び出すことができます。