クリックした複数のオブジェクトを、順番に配列(Array)の中に入れられる仕組みをつくりましょう。
3つのオブジェクトを用意し、配列の長さ(Length)も3つ作成。
クリックで指定したオブジェクトを順に取得し、要素0~2の中に追加されます。
関連記事:
配列にあるオブジェクトを要素番号で呼び出す
ランダム表示したPrefabを順に配列に入れる
入力テキストを順番に配列に入れる
ぶつかったオブジェクトを順に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
FindObjectsOfTypeで指定したクラスを全て取得
指定した順序でオブジェクトを取る
指定した要素番号にオブジェクトを入れる
スクリプトから配列に格納する
配列にある複数オブジェクトを一気に出す
複数のオブジェクトを配列に入れる
Cube、Sphere、Cupsuleを作成し、それぞれ横並びに配置します。
空のオブジェクト(GameObject)を作成します。
ClickObject.csを作成し、GameObjectに追加します。
ClickObject.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 39 40 41 42 43 44 45 46 47 48 49 50 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickObject : MonoBehaviour { public GameObject[] myArray = new GameObject[3]; public int count; void Start() { count = 0; } void Update () { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Input.GetMouseButtonDown(0) && count < 3) { if(count == 0){ if (Physics.Raycast(ray, out hit)) { myArray[0]= hit.collider.gameObject; hit.collider.gameObject.SetActive(false); count++; } } if(count == 1){ if (Physics.Raycast(ray, out hit)) { myArray[1]= hit.collider.gameObject; hit.collider.gameObject.SetActive(false); count++; } } if(count == 2){ if (Physics.Raycast(ray, out hit)) { myArray[2]= hit.collider.gameObject; hit.collider.gameObject.SetActive(false); count++; } } } } } |
ゲームプレイして、GameObjectのインスペクタービューを確認しましょう。
オブジェクトをクリックすると、要素0~2の中に入っていきます。
Arrayは0から始まるので、サイズ(配列の長さ)を3で作れば、要素0~2が作成されます。
クリックするたびにcountを1ずつ増やし、要素0から順に入るように、countで条件付けしています。
関連記事:
配列にあるオブジェクトを要素番号で呼び出す
ランダム表示したPrefabを順に配列に入れる
入力テキストを順番に配列に入れる
ぶつかったオブジェクトを順に配列に入れる
複数のオブジェクト名を配列に入れてテキスト表示
FindObjectsOfTypeで指定したクラスを全て取得
指定した順序でオブジェクトを取る
指定した要素番号にオブジェクトを入れる
スクリプトから配列に格納する
配列にある複数オブジェクトを一気に出す