C#
array
Unity
プログラム初心者

プログラム超初心者メモ  配列( [ ] のアレイについて )

[]のアレイについて

< []のアレイの特徴 >
 ・要素数の増減には向いていない。が、処理が速いらしい。
 ・固定のデータ以外は要素数だけつくっておいて、後から中身を更新するほうが使いやすいかも・・・

以下テストコード丸ごと
※ Unity Mac VScode 利用でのテスト用
 てきとうなゲームオブジェクトにこのコードを貼り付けてインスペクタで
 ループモードを変えれば、プリント内容が変わります。

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

public class ArrayOfInitial : MonoBehaviour {

//配列系の確認 < []のアレイ > とりあえず宣言と初期値設定まとめ

//< 宣言時のもろもろな書き方 >
    //------------------------------------------------------
    // ① 多分基本形はこれだけど、要素数と要素を合わせるのが面倒でメリットが薄そう
    public int[] Num3 = new int[5] { 0, 1, 2, 3, 4 };
    //------------------------------------------------------
    // ② とりあえず変数宣言のみのスタイル
    //   Start() などの実行時か、UnityEditorのインスペクタで値を入れないと中身を作れない
    //     結局これでいい気がするけど・・・
    //     これ以外は、Unityの場合は初期値を変数宣言時に行うと、メタファイルに情報が残るからか?
    //   あとから宣言時の値をスクリプトで管理しにくいのが不便に感じる...
    public int[] Num;
    //------------------------------------------------------
    // ③ 要素数だけ決めて中身は後からのスタイル
    //   インスタンスを入れたり、座標の合成代入先など...
    public int[] Num1 = new int[3];    
    //------------------------------------------------------
    // ④ いきなり要素を作るスタイル 
    //   要素を書いたら要素数が決まる! 要素数は省略できる!
    public int[] Num2a =new int[] { 0, 1, 2, 3 };

    //   new int[] も省略可能...だが変数宣言時のみ下記のスタイルが許容されている
    public int[] Num2b = { 0, 1, 2, 3 };
    //     中途半端な省略はエラーになる
    //   public int[] Num2c =new int { 0, 1, 2, 3 };
    //------------------------------------------------------
    //  ※ その他のエラーパターン
    // ・ 因みに 下のように最後に()をつけてはいけない! 
    //   上のどのパターンでも()は付けたらダメ! Listと勘違いしないように!っと
    //   public int[] i_NumXX4 = new int[5] { 0, 1, 2, 3, 4 }();

    // ・ 当然、配列の枠と要素数とが合っていない場合はエラー。
    //   public int[] i_Num4 = new int[5] { 0,1, 2, 3, 4,5,6 }; 
    //------------------------------------------------------


//< 関数内での書き方 >
    //------------------------------------------------------
   int[] NumX;
    void Example0()
    { 
        //  new int[] 省略形 はアウト!
        //  下記はやっぱりコンパイルエラーになる。
        //   NumX2 = {9,8,7}; 
        //  ▼ これならOK
        NumX = new int[]{9,8,7}; 

      //    new int[] 省略形は、 このように変数の要素をさきに作っても...
         int[] num2b=new int[4];
        //  下記の行はコンパイルエラーがでて許容されない。
        // num1b = { 0, 1, 2, 3 };

        //  変数宣言時ならローカル変数でも問題ない...わかりにくい! ("=";)
        //  多分つまり...この書き方は変数宣言時にしか使えない。
        int[] numX = {9,8,7};
    }   
    //-----------------------------------------------------

//< Start()内での確認 >
    //------------------------------------------------------
    //  変数を宣言し、Start() 内部で要素数を決める。
    //  この書式は汎用性があり使いやすい。
    //  結果的に行が増えるが、Unityでは変数宣言時に要素数を決めないほうが使いやすいのでは??
    //  要素もプールとして使うなら、 for などのループ処理で生成するほうが使いやすいのでは?
    public int[] NumInStart;
    void Start () {
         NumInStart= new int[5];
    //------------------------------------------------------   
    }               
}