配列に入れた分のオブジェクトを、一気に生成できるように、スクリプトを作成してみましょう。
Sphereオブジェクトを、スクリプトを使ってすべて配列に格納。
クリック一回の実行で、すべて生成します。
関連記事:
foreach文を使ったくり返し処理
配列をすべてリストに移す
ぶつかったオブジェクトをリストに追加する
クリックしたオブジェクトを順番に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
他のオブジェクトの配列を取得する
ランダム表示したPrefabを順に配列に入れる
配列にあるオブジェクトを要素番号で呼び出す
指定した要素番号にオブジェクトを入れる
スクリプトから配列に格納する
リストのサイズ(長さ)を取得
複数地点から順番にPrefabを生成
Prefabを並べて一気に発射
並べたPrefabを左から順に発射
配列内のオブジェクトを等間隔に並べる
配列内を一度に生成
ドラッグ&ドロップで、オブジェクトを配列の中に入れてもいいのですが、今回はスクリプトを使って配列へ格納する方法でつくっていきましょう。
Resourcesという名前で、フォルダを作成します。
(※フォルダ名は必ず、「Resources」にしてください。)
Resourcesの直下に、Prefabというフォルダを作りました。
(※このフォルダ名は何でもかまいません。)
Prefabフォルダ内に、通し番号で、Sphere0~4のプレハブを作りました。
このプレハブには、すべてリジッドボディを追加しています。
Cubeを作成します。
PutObject.csを作成し、Cubeに追加しましょう。
PutObject.csを記述します。
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 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PutObject : MonoBehaviour { public GameObject[] ballArray = new GameObject[5]; private int count; private int number; private GameObject ball; void Start() { for (int count=0; count<ballArray.Length; count++) { GameObject ball = (GameObject)Resources.Load("Prefab/Sphere" + count.ToString()); ballArray[count] = ball; } } void Update() { if(Input.GetMouseButtonDown(0)) { PutOut(); } } void PutOut() { foreach(GameObject item in ballArray) { count++; Instantiate(item,new Vector3(0, 0, count),Quaternion.identity); } count = 0; } } |
ゲームプレイすると、BallArrayに、Spher0~4のプレハブが確認できます。
Resources.Loadを使えば、Resourcesフォルダを指定して、ファイルを読み込むことができます。
ゲームビューでクリックしてみましょう。
foreachで、ballArray内のオブジェクトを取り出してループ。
配列のサイズ分だけループして、Z方向を1ずつ変えています。
関連記事:
foreach文を使ったくり返し処理
配列をすべてリストに移す
ぶつかったオブジェクトをリストに追加する
クリックしたオブジェクトを順番に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
他のオブジェクトの配列を取得する
ランダム表示したPrefabを順に配列に入れる
配列にあるオブジェクトを要素番号で呼び出す
指定した要素番号にオブジェクトを入れる
スクリプトから配列に格納する
リストのサイズ(長さ)を取得
複数地点から順番にPrefabを生成
Prefabを並べて一気に発射
並べたPrefabを左から順に発射
配列内のオブジェクトを等間隔に並べる