Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

フロー制御

フロー制御 オペレーションにより、ブループリントでの実行フローを明確に制御することができます。この制御は、ある条件が True またはFalse、特定のブランチの複数実行、複数のブランチをある一定の順序で実行するなど、 その他さまざまな条件に基づいたブランチをグラフ上で選択して 制御を実行します。デフォルト設定のフロー制御オペレーションには、 ブランチ (if 文) 、ループ (for と while) 、ゲート、シーケンスがあります。

Switch ノード

Swithc ノードがデータ入力を読み取り、その入力値に基づいて一致する (あるいはオプションのデフォルト) 実行出力から実行フローを送ります。切り替えは以下の 4 種類です。 IntStringNameEnum

通常、スイッチには実行入力と、評価対象データの種類にあわせたデータ入力が付いています。出力はすべて実行出力です。Enum スイッチは、 Enum のプロパティから自動的に出力実行ピンを作成します。 一方、 IntStringName スイッチの出力実行ピンはカスタマイズが可能です。

Switch ノードの編集

IntString、あるいは Name スイッチノードをブループリントに追加する場合、使用できる出力実行ピンは Default ピンのみです。入力値が他に指定した出力ピンのいずれにも一致しないと、 Default 出力実行ピンが発行されます。削除するには、ピンを右クリックしスイッチノードの [Default (詳細)] タブで [Remove Execution Pin (実行ピンを削除)] を選択するか、 [Has Default Pin (デフォルトピンを付ける)] オプションのチェックを外します。

NewSwitchOnInt.png

Int スイッチの編集

  1. [Graph (グラフ)] タブのスイッチノードを選択し、[Details (詳細)] タブにプロパティを表示します。

  2. Start Index を確認したい最低整数値に変更します。

    SwitchOnInt_StartIndex.png

  3. スイッチノードの [Add Pin (ピンを追加)] をクリックし、 Start Index 値でピンを追加します。

    SwitchOnInt_AddPin.png

    [Add Pin (ピンを追加)] をクリックしてさらにピンを追加します。1 回の増加幅は 1 です。実行ピンを削除するには、ピンを 右クリック[Remove Execution Pin (実行ピンを削除)] を選択します。Switch on Int ノードの出力実行ピンを取り除くと、 ギャップを埋めるために値の高いピンの値が 1 に下がります。

Name または String スイッチの編集

  1. [Graph (グラフ)] タブのスイッチノードを選択し、[Details (詳細)] タブにプロパティを表示します。

  2. ピン名 の右の Add Pin アイコンをクリックします。

  3. 表示されたテキストボックスの中に String あるいは Name と比較したい値を入力します。

    SwitchOnString_NamePin.png

    SwitchOnString_WithPin.png

同じプロセスを繰り返して他のピンも追加します。[Details (詳細)] タブのお好きなピンで Pin Options アイコンをクリックすれば、ピンのコピー、挿入、削除が可能です。 実行ピンを削除する場合は、ピンを 右クリック して [Remove Execution Pin (実行ピンを削除)] を選択します。

Standard Flow Control ノード

これらのノードにより様々な方法で実行のフローを制御することができます。

FlowControlExpanded.png

Branch

Branch_Example.png

Branch ノードは単一の True/False 条件の決定に基づいて簡単なフローを作成します。 実行されると、 Branch ノードはアタッチされた Boolean の入力値に基づいて、 適切な出力へ実行パルスを送り込みます。

この例では、ブランチは Boolean 変数の現在の状態をチェックしています。True の場合、 ライトの色は赤に設定されます。False の場合、ライトの色は青に設定されます。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) この実行入力はブランチのチェックをトリガーします。
Condition トリガーされる出力ピンを表示する Boolean 値を受け取ります。

出力ピン

True 入力条件が true の場合、実行パルスを出力します。
False 入力条件が false の場合、実行パルスを出力します。

DoN

DoN Example

DoN ノードは実行パルスを N 回発行します。限界に達した後、パルスが Reset 入力に送りこまれるまで全ての実行の送信を停止します。

例えば、ビークル開始を 20 回発行することはできますが、Reset 入力に結びついたイベントの燃料補給がアクティベートするまで開始することはできません。

クリックして表示を拡大する

アイテム 説明

入力ピン

Enter DoN のチェックをトリガーする実行入力です。
n DoN ノードがトリガーする回数を設定する入力です。
Reset DoN ノードが再度トリガーされるようにリセットする実行入力です。

出力ピン

Exit DoN がまだ N 回以上トリガーされていないか、あるいはリセット入力が呼び出された場合のみトリガーされる実行ピンです。

DoOnce

DoOnce_Example.png

DoOnce ノードは、名前から想像ができるように、実行パルスを 1 回のみ発行します。それ以降は、 パルスが リセット 入力へ送りこまれるまで実行の送信を停止します。このノードは N = 1 の DoN ノードに相当します。

例えば、DoOnce で ドアを開くためにネットワークを動かすことができますが、 そのドアは 1 回だけしか開きません。ただし、トリガーイベントをリセットに結びつければ、 トリガーがアクティベートされた時にドアへのアクセスが可能になります。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) この実行入力は DoOnce チェックをトリガーします。
Reset DoOnce ノードが再度トリガーされるようにリセットする実行入力です。

出力ピン

Completed DoOnce がまだトリガーされていないか、リセット入力が呼び出された場合のみトリガーされる実行ピンです。

FlipFlop

FlipFlop_Example.png

FlipFlop ノードは実行出力を受け取り、 2 つの実行出力を切り替えます。最初の呼び出しで、 出力 A が実行されます。2 回目は B です。 そして、A 、 B 、となります。ノードには出力 A が呼ばれた時に追跡を可能にする boolean 出力もついています。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) FlipFlop をトリガーする実行入力です。

出力ピン

A FlipFlop がトリガーされた後、最初と奇数回に呼び出される出力ピンです。
B FlipFlop がトリガーされた後、2 回目と偶数回に呼び出される出力ピンです。
Is A 出力 A がトリガーされているかどうかを表す boolean 値を出力します。実際には FlipFlop ノードがトリガーされるたびに truefalse を切り替えます。

ForLoop

ForLoop_Example.png

ForLoop ノードは、標準的なコードのループのように、開始と終了の間の各インデックスに対し実行パルスを発行します。

下記の簡単なサンプルではプレーヤーがシンプルなレベル トリガーに触れるとループがトリガーされます。ループは都度 Print String を呼び出しながら 10 回反復し、 現在のイテレーションと一緒に、メッセージのプレフィックスのログを取ります。

フレーム間でループ イテレーションが起こるので、ループが大きいとパフォーマンス ヒットが生じます。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) ループを起動する実行入力です。
First Index ループの最初のインデックスを表す Int を受け取ります。
Last Index ループの最後のインデックスを表す Int を受け取ります。

出力ピン

Loop Body インデックス間を移動するので、ループのイタレーションごとに実行パルスを出力します。
Index 現在のループインデックスを出力します。
Completed for loop が完了すると発行する標準の実行出力ピンです。

ForLoopWithBreak

ForLoopWithBreak_Example.png

ForLoopWithBreak ノードは、ループを終了することができる入力ピンをもつ点を除いて、 ForLoop ノードと非常によく似た動きをします。

下記の簡単なサンプルではプレーヤーがシンプルなレベル トリガーに触れるとループがトリガーされます。ループは 1000 回イテレートしますが、 毎回 Branch をヒットしてループが 500 回イテレートしたかを確認します。 500 回に達していない場合、現在のイタレーション数についてメッセージが画面に流れます。500 回を超えると、 Branch が Custom Event を呼び出し、ループが終了します。映像を明確にし、Break 入力ピンをぐるりと回ってワイヤーラップする必要性をなくすために、 カスタムイベントを使用します。

フレーム間でループ イテレーションが起こるので、ループが大きいとパフォーマンス ヒットが生じます。

クリックして表示を拡大する

BrokenAt500.png

アイテム 説明

入力ピン

(Unlabeled) ループを起動する実行入力です。
First Index ループの最初のインデックスを表す Int を受け取ります。
Last Index ループの最後のインデックスを表す Int を受け取ります。
Break この実行入力はループを終了します。

出力ピン

Loop Body インデックス間を移動するので、ループのイタレーションごとに実行パルスを出力します。
Index 現在のループインデックスを出力します。
Completed for loop が完了すると発行する標準の実行出力ピンです。

Gate

Gate_Example.png

Gate ノードは、実行のストリームを開閉するための手段として使用されます。入力するだけで、 Enter 入力が実行パルスを受け取り、 ゲートの現在の状態 (開く、または閉じる) は これらのパルスが Exit 出力から渡されているのか否かを決定します。

下図の例では、トラックのないタイムラインが 自動再生とループを両方アクティベートした状態で
ゲートの Enter 入力ピンを更新します。レベルにはトリガーが 2 つあります。1 つのトリガーがゲートを開き、もう 1 つのトリガーがゲートを閉じます。 ゲートが開いていれば、パルスは Exit ピンを出て、メッセージを画面にログする Print String が呼び出されます。プレーヤーが Close (閉じる) トリガーに触れると、ゲートが閉まり、メッセージの表示が停止します。プレーヤーが今度は Open (開く) トリガーに触れると、メッセージの表示が再開します。

クリックして表示を拡大する

アイテム 説明

入力ピン

Enter この実行入力は、実行がゲートで制御されていることを表します。
Open ゲートのステートを オープン にし、実行パルスが Exit 出力ピンへ渡るようにする実行ピンです。
Close ゲートのステートを クローズ にし、 実行パルスが Exit 出力ピンから渡されないようにする実行ピンです。
Toggle ゲートの現在の状態を逆にする実行ピンです。 オープン が逆に クローズ になります。
Start Closed ゲートの開始状態を判断する boolean 入力です。 true に設定されている場合、ゲートはクローズの状態で開始します。

出力ピン

Exit ゲートの状態が現在 オープン の場合、実行パルスが Enter 入力ピンをヒットするとパルスが Exit 出力ピンを離れます。ゲートが クローズ の場合、 Exit ピンは機能しません。

MultiGate

MultiGate_Example.png

MultiGate は単一データパルスを受け取り、それを出力の可能性のあるところ全てに送ります。連続でもランダムでも行われ、 ループする場合もあれば、しない場合もあります。

下図は、単一ループで 0.5 秒ごとの自動再生タイムラインによるパルス出力のサンプルです。 このパルスが MultiGate をヒットし適切に送られ、 Print String ノードの内の 1 つをトリガーします。 結果、順番で再生されている場合は特別なメッセージが表示されます。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) MultiGateにより送信される必要があるパルスを全て受け取る主要な実行入力です。
Reset -1 の時、現在の出力インデックスのデフォルトを 0 に戻す、または現在の設定されている Start Index に設定します。
Is Random 設定が true の場合、 出力の順番はランダムに選択されます。
Loop 設定が true の場合、出力はループで継続的に繰り返されます。false の場合、全ての出力が使用されてしまうと MultiGate は機能を停止します。
Start Index Int を受け取り、MultiGate が最初に使用する出力インデックスを表示します。-1 の値は開始点を指定しない場合と同じ値です。

出力ピン

Out # 各出力は、送信された実行パルスを送信するために MultiGate が使用できる出力ピンを表します。
Add pin 実際は出力ピンではないですが、好きなだけ出力を追加できるボタンです。出力を削除するには、 右クリック して「出力ピンを取り除く」を選択します。

Sequence

Sequence_Example.png

Sequence ノードは単一実行パルスで、一連のイベントを順番にトリガーすることを可能にします。ノード には 好きなだけ出力をつけることができます。 Sequence ノードが入力を受け取ると、すべての出力が呼び出されます。出力は常に順番に、 後れることなく呼び出されます。普通ユーザーには、 出力が同時にトリガーされているように見えます。

このサンプルでは、シーケンス ノードはレベルの最初に呼び出されます。そして順番に
5 つの Print String を発行します。ただし、故意に遅らせることがなければ、 それぞれのメッセージの表示はほぼ同時に見えます。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) Sequence により送信される必要があるパルスを全て受け取る主要な実行入力です。

出力ピン

Out # 各出力は、送信された実行パルスを送信するために Sequence が使用できる出力ピンを表します。
Add pin 実際は出力ピンではないですが、好きなだけ出力を追加できるボタンです。出力を削除するには、 右クリック して「出力ピンを取り除く」を選択します。

WhileLoop

WhileLoop_Example.png

WhileLoop ノードは指定された条件が true であれば結果を出力します。ループの反復中、 入力 boolean 値の現在のステータスを確認します。false を読み取ると、ループは終了します。

このサンプルでは、ループ回数を数えるために、 整数値反復イテレーション ネットワークと一緒に WhileLoop が使われます。10 回目のイタレーションで、テスト boolean が false に設定され、ループ動作が終了します。

プログラミング言語の While ループと同じように、インフィニティ ループが発生しないように特別に注意する必要があります。

クリックして表示を拡大する

アイテム 説明

入力ピン

(Unlabeled) WhileLoop を操作する全てのパルスを受け取る主要な実行入力ピンです。

出力ピン

Loop Body インデックス間を移動するので、ループのイタレーションごとに実行パルスを出力します。
Completed ループが終了するとすぐに発行する標準実行出力です。