2013年4月3日 星期三

Unity C# 陣列中的陣列 不規則陣列

先貼上C# 教學手冊中解釋

http://msdn.microsoft.com/zh-tw/library/2s05feca.aspx

我目前需要五個陣列, 預設是執行第一個陣列

但希望事件觸發後, 跳到第三個陣列進行, 該怎麼辦呢?


翻開C#教學手冊, 如天書般解釋

不規則陣列就是陣列中陣列.....太多陣列了.我眼花~

看不懂解釋, 直接看碼好了


 int[][] jaggedArray3 = 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};


print(jaggedArray3[0][1]) = 3

print(jaggedArray3[2][1]) =11

OK! 我們來稱jaggedArray3為大陣列, 他裡面有很多子陣列

所以大陣列[0]就會指向 第一個子陣列
大陣列[1]就會指向    第二個子陣列
依此類推....

那大陣列[0][2]是什麼?

[0]就是第一個子陣列
[2]就是第一個子陣列的第三個元素5 

所以為了達到目的, 我可以將大陣列改寫成

print(jaggedArray3[key1][key2])

用key1 和 key2 去讀取裡面的元素

我可以直接使用其中元素嘛? 可以~如果元素宣告是物件,不是整數

那可以直接呼叫


public void Array(){
GameObject [][] BigArray{
 GameObject [] {GO1, GO2, GO3},  //逗點很重要
 GameObject []{GO4,GO5},
 GameObject []{GO6}             //最後不需要逗點
}

GO4.enable = false ;  // GO4物件直接使用

}

OK~最後,要使用陣列一定要宣告在方法裡面,不能宣告在class下, 所以我就得很蠢要使用
這陣列的"方法"都要宣告一次(不規則陣列是很占空間的!!!)

有沒有什麼好辦法呢?

研究中...