前回までの作業がまだ済んでいない場合は、基本的な使い方から前回までのチュートリアルを先に済ませてください。
今回はFor Intノードを使用して処理の繰り返しを行ってみましょう。
内容は以下の通りです。
- Logic Behaviorコンポーネントの付いたGameObjectを作成する。
- Logic Editorウィンドウでグラフを開いて編集する。
- For Intノードでループ
シーンを新規作成
他のシーンを開いていると混乱の元となりますので、シーンを新規作成しましょう
- メニューからFile > New Sceneを選択
- New SceneウィンドウでBasic (URP)を選択
- Createボタンをクリック
Logic Behavior付きGameObject作成
シーンにLogic Behaviorコンポーネントが追加された状態のGameObjectを作成します。
- Hierarchyの+ボタンをクリック
- メニューからLogic Toolkit > Logic Behaviorを選択
- 名前はそのまま
Enterキー
で確定。
Logic Editorウィンドウで開く
Logic BehaviorコンポーネントのグラフなどはLogic Editorウィンドウで編集します。
ウィンドウが表示されていない場合は、GameObjectを選択してInspectorの「Edit」ボタンをクリックすることで表示されます。
- Logic Behaviorオブジェクトを選択
- InspectorウィンドウのLogic BehaviorコンポーネントのEditボタンをクリック

すでにLogic Editorウィンドウが表示されている場合は、HierarchyウィンドウでのGameObject選択と連動してグラフが切り替わるようになります。
For Intノードの作成
For Intノードを作成します。
- Startノードの実行出力ポートをドラッグ
- 右側付近でドロップし、ノード作成メニューを開く
- Scriptsタブを選択
- 一覧からFlow Controls > For Intを選択
For Intノードについて
For Intノードは繰り返し処理を行うためのノードです。

Start Valueフィールドの値から順にValueポートに現在の値を出力し、現在の値が条件に合致していればBodyポートの接続先の実行します。
Bodyポートの接続先の実行が完了すると、現在の値にAmountフィールドの値を加算し、条件が合致している間はBodyポートの接続先の実行を繰り返します。
条件やAmountフィールドの設定によっては無限ループにもなりますのでご注意ください。
ただし無限ループになってもフリーズしない仕組みになっていますのでご安心ください。
For Intの他にもFor LongやFor Floatなど、扱う数値型が異なるバージョンも用意されております。
必要に応じて他のノードを使用してください。
For Intノードの設定
今回は10回繰り返すようにします。
- Comparison Valueフィールドを
10
に設定

Bodyポートの接続先にDebug.Logを作成
ループ中の本体処理を作成します。
- For IntノードのBodyポートをドラッグ
- 右側付近でドロップし、ノード作成メニューを開く
- Scriptsタブを選択
- 一覧からActions > Debug > Debug.Logを選択
- ノード名はそのまま
Enter
キーで確定
ValueポートとMessageポートの接続
For Intノードの繰り返し中の現在の値をConsoleに表示させるため、ポートを接続します。
- For IntノードのValueポートをドラッグ
- Debug.LogのMessageポートにドロップ
メンバーアクセスで乱数取得でも説明しましたが、接続すると自動的に間に作成されるノードはConvertノードです。
今回はFor IntノードのValueのint型をMessageのstring型に変換するためのToStringノードが作成されています。
Debug.Logの接続先にWait For Secondsを作成
Debug.Logだけですと一瞬で繰り返し処理が終わってしまいますので、一定時間待機します。
- Debug.LogのActionノードの遷移出力ポートをドラッグ
- 右側付近でドロップし、ノード作成メニューを開く
- Scriptsタブを選択
- 一覧からTasks > Wait For Secondsを選択
- ノード名はそのまま
Enter
キーで確定
Wait For Secondsの設定
1秒間待機するように設定します。
- Secondsフィールドを
1
に設定

繰り返し完了のDebug.Logを作成
繰り返しが終わったこともConsoleに出力しましょう。
- For IntノードのCompletedポートをドラッグ
- 右側付近でドロップし、ノード作成メニューを開く
- Scriptsタブを選択
- 一覧からActions > Debug > Debug.Logを選択
- ノード名はそのまま
Enter
キーで確定
繰り返し完了のDebug.Logの設定
Consoleに表示する文字列を設定します。
- Messageフィールドに
Completed
と入力

プレイして確認
ここまで作成するとグラフは以下のようになっています。

プレイボタンを押して挙動を確認します。
- Consoleに
0
から9
まで1秒間隔で表示されることを確認。 - 最後に
Completed
と表示されることを確認。
Consoleウィンドウが表示されていない場合は、メニューからWindow > General > Consoleを選択して表示してください。
10
が表示されない理由はComparison OPフィールドが< (Less Than)
だからです。
Valueが10
になるとValue < 10
が偽となるため繰り返し処理から抜けます。
フロー終了系ノード
For Intノードなどの繰り返し用ノードには、特殊なフロー終了系ノードが用意されています。
ここではFor Intノードに関連する終了ノードを一通り紹介します。
複雑な繰り返し処理を行う場合に必要に応じて使用してください。
Exitノード
Exitノードは通常の終了ノードです。
遷移先ノードがない場合は自動的にExitノードと同じように実行終了するため、基本的には省略可能です。

For IntノードのBodyで使用した場合、Valueを更新し条件を満たす限りBodyの最初から繰り返します。
Valueが条件を満たさない場合はCompletedポートの接続先に遷移します。
Continue
ContinueノードはFor Intなどの繰り返し用ノード専用の終了ノードです。
Bodyの先にIfノードなどがある場合、ExitノードではIfノードの条件分岐の終了処理に使われてしまうため、Exitの代わりにContinueノードを使用することで次の繰り返しに移行できます。

For IntノードのBodyで使用した場合、Valueを更新し条件を満たす限りBodyの最初から繰り返します。
Valueが条件を満たさない場合はCompletedポートの接続先に遷移します。
Break
Breakノードは繰り返しを抜けるノードです。

For IntノードのBodyで使用した場合、そこでBodyの繰り返しを終了しCompletedポートの接続先に遷移します。
Restart
Restartノードは、無条件に実行を再スタートするノードです。

For IntノードのBodyで使用した場合、Valueを更新せずにBodyの最初から繰り返します。
For Intノードに限らず実行ポートの接続先であれば無条件に再スタートします。
例えばFor IntノードのBody→IfノードのThen→Restartという接続の場合、Restartに到達するとIfノードのThenポートの接続先が再スタートします。
おわり
今回で基本的な使い方は終了です。
他にも簡単なゲームを作成する実践的なチュートリアルもありますので、ぜひ試してみてください。
チュートリアル一覧はこちら
試用版でお試しの方は、お気に召しましたらアセットストアにてご購入ください。