今回はUnityと言うか少しプログラム的なメモです。静的配列(array)と動的配列(list)の基本についてです。
はじめに
プログラミングで値(文字や数字)を扱う時は、変数を使用します。「int i=0」とか「str moji=”A”」みたいな感じですね。iは「int型の変数の箱」で0が入ってるという感じですね。
同じデータ型の変数を大量に使う場合、「int i,i2,i3・・・」とするのではなく、配列を使用すると簡潔になりますね。
配列は多くのプログラミング言語に存在し、もちろんUnityのC#にもあります。
簡単なスクリプト例
実際にスクリプトを見ていきます。
静的配列(array)
簡単なint型の静的配列の場合、下記の様な感じになります。
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private int[] intArray = new int[3]; void Start() { intArray[0] = 10; intArray[1] = 20; intArray[2] = 30; } }
下記の様に初期値として入れることもできます。
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private int[] intArray = { 10, 20, 30 }; }
Unityぽいのは下記の感じかな。
using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField] private int[] intArray; }
インスペクター画面で初期値をセットします。
「intArray[0]に10、intArray[1]に20、intArray[2]に30」が入っている状態ですね。配列の数がプログラム内で変わらない場合、こんな感じですかね。
動的配列(List)
次は動的配列です。配列の数がゲーム中(プログラム内)で増えたり減ったりする場合に使うものです。
動的配列の場合、下記の様のような感じになります。Addで追加すると値と共に配列数も追加されます。
using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { private List<int> intList = new List<int>(); void Start() { intList.Add(10); intList.Add(20); intList.Add(30); } }
同じようにUnityのインスペクター画面でセットもできます。
using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField] private List<int> intList; }
配列の要素を削除したい場合は下記の様な感じ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { [SerializeField] private List<int> intList; void Start() { intList.Remove(20); } }
実行すると配列は下記の様になります。2番目が削除されてその分詰まる感じですね。
配列の要素番号を指定して削除する場合は下記の様な感じ。結果は同じです。
intList.RemoveAt(1);
増えたり減ったりするもの、例えばアイテムを配列で管理する場合はLISTを利用して追加、削除て感じですかね。