動的配列を覚える!UnityでListを使う方法【初心者向け】

初心者向けにUnityで配列に似たListを使う方法について解説しています。実際にソースコードを書きながら説明しているのですぐ分かるでしょう。ゲーム開発をする上で役に立つ知識になるので、ぜひご覧ください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

ほとんどのプログラミング言語には配列と言う、同じデータ型の変数をまとめる機能が備わっています。

Unityで使用されているC#ではその配列の他にListという配列に似た機能が備わっています。今回はそのListを使用する方法について解説していきたいと思います。

 

なお、本記事はTechAcademyのUnity入門オンライン講座の内容をもとにしています。

 

田島悠介

今回はC#のList型について勉強しよう。

大石ゆかり

田島メンター!!List型とは何ですか~?

田島悠介

役割としては配列と同じなんだけれど、これは動的に要素の数を増減できる便利なものなんだ。簡単な例で実際に確認してみよう。

大石ゆかり

はい!

 

Listとは

冒頭でも説明しましたがListは配列ととても良く似たものです。違いは、配列の長さが動的か静的かだけです。

配列を宣言するときは、初めから配列の個数は決められています。

しかし、Listの場合は長さを決めずに宣言することができます。その時によって要素数を増減させることができます。

int[] intArray = new int[10]; //配列の書き方

 

Listの書き方

それではListの書き方を解説していきたいと思います。

まず冒頭に以下の文を入れましょう。これを入れないとListを使用する事はできません。

using System.Collections.Generic;

次にListの宣言方法です。Listも変数の一種なので、宣言する必要があります。

private List<int> myList = new List<int>();

intの部分を変更して宣言すれば、String型はもちろんGameObjectなどの、Unity独特の型でも宣言する事ができます。

 

使用する際は以下のように使用する事ができます。

myList.Add(newInt1); //int型 newIntO1をmyListに加える
Int newInt2 = myList[0]; //Listの要素を変数に代入、配列と同じように使用出来る
myList.RemoveAt(0); //Listの0番目の要素を消す
myList.Clear(); //Listすべての要素を削除

 

田島悠介

実際に画面でどのように処理されるか見てみようか。

大石ゆかり

どんな形で確認したらいいですか~?

田島悠介

「GameObject」→「UI」→「Text」でテキストを新規作成し、それに以下のスクリプトを追加してみよう。

 

[PR] Unityを使ったゲーム開発で挫折しない学習方法を動画で公開中

実際にListを使用してみる

今回はListを使用してカウントダウンを作ってみましょう。 中央にテキストを配置して、以下のような画面を作成してください。

unity_07_01

次にカウントダウンのための処理を書いていきます。少し長いですが頑張りましょう。

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

public class countDown : MonoBehaviour {
  
  private List<int> myList = new List<int>(); //Listの宣言
  private float timeleft; //時間測定のための変数
  private int count; //カウント変数

    void Start () { 
    for (int i = 0; i < 10; i++)
    { 
      myList.Add(i); //Listに値を格納
    }
    }

    void Update () {
    timeleft -= Time.deltaTime;
    if (timeleft <= 0.0) { 
      timeleft = 1.0f;
      this.GetComponent<Text>().text = myList[9 - count].ToString(); //テキストの変更
      count++;
    }
    }
}

再生してみて、カウントダウンができていると成功です。

unity_07_02

 

まとめ

今回はListを使用してみました。

Listは配列の長さが決まっていないので、より多様な場面で使用する事ができます。

またゲーム制作の現場では、メモリをいかに減らすか考える際に、動的なコードを書ける力は必須となってくるので、ぜひListを理解しましょう。

 

田島悠介

Listを使った例を実践してみたよ。

大石ゆかり

カウントダウンはゲーム中でも何かと使えそうですね。

田島悠介

Unityではこのようにスクリプトを活用することで、テキストのオブジェクトにも色々な役割を持たせることができるんだ。少しずつレパートリーを増やしてみよう。

大石ゆかり

分かりました。頑張ってみます!

 

[お知らせ]TechAcademyではオリジナルゲームアプリが公開できるUnityオンラインブートキャンプを開催しています。現役Unityエンジニアのサポートで効率的に学びたい場合はご検討ください。