foreach文によるループ処理により、配列(Array)の中のオブジェクトを出現させてみましょう。
breakやcontinueも使用してループを制御し、生成するオブジェクトの種類を変えてみます。
関連記事:
配列をすべてリストに移す
同じタグのついたオブジェクトだけを消す
重複せずランダムでオブジェクトを並べる
配列にある複数オブジェクトを一気に出す
配列内のオブジェクトを等間隔に並べる
foreachで配列の中をすべて出す
空のオブジェクを作成します。
Cubeを作成して、名前をCube1に変更。
Cube1を複製して、Cube2~4も作成します。
わかりやすいように、Cube1~5に色をつけます。
Cube1~5をプロジェクトビューにドラッグ&ドロップして、Prefab化します。
Cube1~5の元データは削除しておきます。
ObjScript.csを作成し、GameObjectに追加します。
ObjScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjScript : MonoBehaviour { public GameObject[] myArray = new GameObject[5]; private int yPos; void Start() { foreach(GameObject item in myArray) { Instantiate(item,new Vector3(0, yPos, 0),Quaternion.identity); yPos++; } } } |
MyArrayの要素の中に、Cube1~5を入れます。
ゲームプレイしてみましょう。
配列のサイズだけオブジェクト生成がくり返されて、Cubeが5個積みあがります。
breakを使う
breakを入れてループを抜け、Cubeの数を変えてみましょう。
ObjScript.csにスクリプトを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjScript : MonoBehaviour { public GameObject[] myArray = new GameObject[5]; private int yPos; void Start() { foreach(GameObject item in myArray) { Instantiate(item,new Vector3(0, yPos, 0),Quaternion.identity); if(item.name == "Cube4") break; yPos++; } } } |
ゲームプレイしてみましょう。
breakを入れると、繰り返しを中断してループを抜けます。
Cube4になればループを抜けるため、Cubeは4個積みあがって終わります。
continueを使う
次に、ループの中にcontinueを入れて、処理をスキップさせてみましょう。
ObjScript.csにスクリプトを追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ObjScript : MonoBehaviour { public GameObject[] myArray = new GameObject[5]; private int yPos; void Start() { foreach(GameObject item in myArray) { Instantiate(item,new Vector3(0, yPos, 0),Quaternion.identity); if(item.name == "Cube2") continue; if(item.name == "Cube4") break; yPos++; } } } |
ゲームプレイしてみましょう。
continueを入れると、その後の処理は実行されず、foreach内の次の処理へ行きます。
Cube2をcontinueにしているので、その後のCube3の生成は実行されていません。
関連記事:
配列をすべてリストに移す
同じタグのついたオブジェクトだけを消す
重複せずランダムでオブジェクトを並べる
配列にある複数オブジェクトを一気に出す
配列内のオブジェクトを等間隔に並べる