はじめに
このテーマで作成した目的は、配列をUnityで活用するにはどうすればいいのかわからなかったので、作ってみました。
自分は初心者という立ち位置ですが、プログラミングの書籍の写経を何度もしてわかったことは。小さくてもいいので、この動きをどうすればいいのか思い浮かべ、調べてトライ&エラーを繰り返すことが一番最適なのではないかと思います。
配列の基本型
int[] a = new int[3]; //型[] 変数 = new 型[配列数]
Game Objectに色を付ける。
3D_objectsを作成する(2個以上作成し色分けも行う)。
↓
ProjectのAsset欄で右クリック → Create → Materialを選択する。
Albedoの赤い部分を選択 → ここから色を選択する
GameObjectのスクリプト
ファイル名はEnemyにしました。これを3Dオブジェクトにアタッチする。
内容は0.5f経過したらGameObjectが消失します。
public class Enemy : MonoBehaviour {
float time = 0;
// Update is called once per frame
void Update () {
time += Time.deltaTime;
if(time >= 0.5f)
{
Destroy(gameObject);
}
}
}
EmptyGameObject・クリプトを作成
空のGameObjectを作成してここに3D_GameObjectが出現できるようにします。
・スクリプト(名前はenemy2にしました)
public class Enemy2 : MonoBehaviour {
[SerializeField] GameObject cube1; //GameObjectを配置
[SerializeField] GameObject cube2; //GameObjectを配置
float time = 0; //float型でtimeを0秒に設定する。
GameObject enemy; //GameObject型をenemyで宣言する。
GameObject[] spaners = new GameObject[2]; //配列GameObject型で配列2つ作成する。
// Use this for initialization
void Start () {
spaners[0] = cube1; //配列0をCube1に指定
spaners[1] = cube2; //配列1をCube2に指定
}
// Update is called once per frame
void Update () {
var v = Random.Range(0, spaners.Length); //Var型を宣言し乱数を生成。spanersは配列が2つなので最大値が2になる。
time += Time.deltaTime; //timeを加算し続ける。
//enemyが無くかつtimeが1.2f以上の場合はenemyにクローンを生成する。
if (enemy == null && time >= 1.2f)
{
enemy = Instantiate(spaners[v], transform.position, transform.rotation);
}
//enemyがある場合timeを0にする。
if(enemy == true)
{
time = 0;
}
//時間経過を見るためコンソールに時間を表示させる。
print(time);
}
}
スクリプトをEnptyEnemyにアタッチする。
結果
今回はGameObjectをオレンジと緑に設定しました。
最後に
配列は写経だけではあまり使わないと思っていたが、実際に使ってみると乱数との相性がとても良く、Unityでも使えるかと不安だったか杞憂でした。