【Unity C#入門】C#の配列をマスターしてゲームオブジェクト管理を効率化しよう!

C#

Unityでのゲーム開発において、複数のデータをまとめて扱うことは日常茶飯事です。例えば、ステージ上の敵キャラクター全員、インベントリ内のアイテムリスト、あるいはプレイヤーのスコア履歴など、同じ種類のデータを大量に扱う必要があります。

この記事では、C#の「配列(Array)」という、そのデータ管理の基本中の基本となる機能について、Unity開発者が知っておくべき使い方と、ゲーム開発での具体的な活用法を、わかりやすいコード例とともに徹底解説します。

この記事を読めば、あなたのゲームオブジェクト管理が劇的に効率化します!

C#の配列とは?

配列の基本:同じ種類のデータを一列に並べる「箱」

C#における配列とは、「同じデータ型」の変数を、決まった個数だけ連続して格納できるデータ構造です。想像してみてください。同じサイズの箱を横一列に並べ、それぞれの箱に番号(インデックス)を振って、まとめて管理しているようなものです。

配列を使う最大のメリットは、大量のデータを一つの名前で扱えるようになることです。

配列の宣言と初期化の方法

配列を使うには、まず「どの型のデータを」「いくつ」格納するのかを決めて宣言する必要があります。

型を決めるのは変数と同じです。

配列の宣言(型と個数を指定)

配列は、型の後ろに角括弧 [] をつけることで表現します。

// int型のデータを5個格納できる配列を宣言
int[] enemyScores = new int[5];

// GameObject型のデータを3個格納できる配列を宣言
// Unityでゲームオブジェクトを管理する際によく使います
GameObject[] playerWeapons = new GameObject[3];

配列の初期化(宣言と同時に値を設定)

宣言と同時に、格納する初期値を設定することもできます。この場合、new 型[個数] の部分は省略可能です。

// string型の配列を宣言し、同時に初期値を設定
string[] itemNames = { "Sword", "Shield", "Potion" }; 
// itemNamesの個数は自動的に3になります。

Unityで役立つ配列の使い方

配列の要素へのアクセス方法(インデックスの重要性)

配列の各要素にアクセスしたり、値を設定したりするには、インデックス(添字)を使います。

インデックスは、0から始まる整数です。

例えば、5個の要素を持つ配列の場合、インデックスは0、1、2、3、4となります。

using UnityEngine;

public class ArrayExample : MonoBehaviour
{
    // 公開変数として配列を宣言すると、UnityエディタのInspectorから値を設定できます
    public GameObject[] spawnPoints = new GameObject[4];

    void Start()
    {
        // 1. 要素への値の設定
        // 最初の要素(インデックス0)にアクセス
        spawnPoints[0].SetActive(true); 

        // 3番目の要素(インデックス2)にアクセス
        Debug.Log("3番目のスポーンポイントの名前: " + spawnPoints[2].name);

        // 配列の個数(要素数)を取得する
        int numberOfPoints = spawnPoints.Length;
        Debug.Log("スポーンポイントの総数: " + numberOfPoints); 

        // 最後の要素(インデックス:個数-1)にアクセス
        spawnPoints[numberOfPoints - 1].transform.position = Vector3.zero;

        // 【⚠️注意!】存在しないインデックスにアクセスするとエラーになります!
        // spawnPoints[4] にアクセスしようとすると、IndexOutOfRangeExceptionが発生します
        //(4は存在しないため)
    }
}

繰り返し処理(for/foreach)と配列

配列の全要素に対して、同じ処理を行いたい場合がほとんどです。

そのためにfor文やforeachを使います。

1. for文を使ったアクセス(インデックスが必要な時)

インデックスを使ってアクセスするため、「何番目の要素か」を知りたい場合や、配列の途中で処理を止めたい場合などに便利です。

// spawnPoints配列の全ての要素を順番に処理する
for (int i = 0; i < spawnPoints.Length; i++)
{
    // i は 0, 1, 2, ... と変化します
    // iを使って、全てのスポーンポイントを1つずつ有効化
    spawnPoints[i].SetActive(true); 

    Debug.Log((i + 1) + "番目のスポーンポイントが有効化されました。");
}

2. foreach文を使ったアクセス(要素そのものが必要な時)

インデックスを使わず、配列の中の「要素そのもの」を順番に取り出したい場合に非常に便利で、コードがシンプルになります。

// itemNames配列の全ての要素(文字列)を順番に処理する
string[] itemNames = { "Sword", "Shield", "Potion" }; 

foreach (string itemName in itemNames)
{
    // itemName には "Sword"、次に "Shield"、次に "Potion" が入ります
    Debug.Log("アイテム名: " + itemName);
}

C#配列でUnity開発を加速!

C#の配列(Array)は、int[]GameObject[] のように、同じ型のデータを一括で管理するための基本的なデータ構造です。

ゲーム開発において、複数の敵アイテムUI要素などを効率的に扱うためには、配列の宣言、インデックスを使ったアクセス、そしてforforeachによる繰り返し処理は欠かせません。

Unity開発では、配列の他に「リスト(List)」という便利な機能もありますが、まずはこの配列の仕組みをしっかり理解することが、より複雑なデータ構造を学ぶための強固な土台となります。

タイトルとURLをコピーしました