LoginSignup
3
5

More than 5 years have passed since last update.

[Unityで学ぶC#] 2-1 配列

Last updated at Posted at 2017-03-31

配列は複数のデータを扱う時に便利.

敵データを複数管理する場合を想定する.

敵データが一つの場合.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 敵
public class Enemy{
    public string name;
    public int hp;
    public int attack;

    public Enemy(){
    }

    public Enemy(string name, int hp, int attack){
        this.name = name;
        this.hp = hp;
        this.attack = attack;
    }

    // ステータスをコンソールに表示
    public void DebugStatus(){
        // string.Formatを使うと, + でつなげるよりも見た目わかりやすく文字を連結できる.
        Debug.Log (string.Format ("名前; {0}, HP: {1}, 攻撃; {2}", name, hp, attack));
    }
}

public class ArrayExample : MonoBehaviour {

    void Start(){
        Enemy en1 = new Enemy ("スライム", 5, 3);
        en1.DebugStatus ();
    }

}

このように敵のデータを表示することが可能です.

結果画像
1つ結果.png

イメージで表すと,

new Enemy ("スライム", 5, 3);

でEnemyを生成し,

Enemy.png

それを en1という名前の箱につっこむ感じです.

変数.png

敵データが3つの時 (配列を使わない)

敵が3体だとすると,Start関数の中は次のようになりますね.

    void Start(){
        Enemy en1 = new Enemy ("スライム1", 5, 3);
        Enemy en2 = new Enemy ("スライム2", 1, 2);
        Enemy en3 = new Enemy ("スライム3", 4, 3);
        en1.DebugStatus ();
        en2.DebugStatus ();
        en3.DebugStatus ();
    }

イメージで表すと以下です.

3つの変数.png

それぞれが独立しています.

これでもできますが,敵の数が多くなると記述するのがどんどん大変になってきます.

敵データが3つの時 (配列を使う)

配列を使うと次のように書くことができます.

    void Start(){
        Enemy[] enemies = new Enemy[3];

        enemies[0] = new Enemy ("スライム1", 5, 3);
        enemies[1] = new Enemy ("スライム2", 1, 2);
        enemies[2] = new Enemy ("スライム3", 4, 3);

        enemies [0].DebugStatus ();
        enemies [1].DebugStatus ();
        enemies [2].DebugStatus ();
    }

解説の前にイメージを示します.

スクリーンショット 2017-04-01 2.38.28.png

まず,この文でenemiesという名前の3つの領域がある箱を作ります.

Enemy[] enemies = new Enemy[3];

領域にはそれぞれ,0から始まる数字がつけられていて,

enemies[0]

のようにしてそれぞれの領域にアクセスできます.
この,0から始まるという点が超大事ポイントです.

enemies[3]

enemies[100]

など,存在しない領域にアクセスするように書いてしまうとエラーが出るので注意です.

配列を使ってない時よりも,変数の数が3つから1つになって,行が1行増えましたね.
For文を使うことでより,スマートに書くことができますが,
長いので分けます.

3
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5