在移植Unity3D遊戲時,遇到的這個問題,作為一個紀錄。
首先,Windows store app不支援Hashtable和ArrayList兩個namespace。所以要改寫,在網路上找到說可以使用Dictionary<TKey, TValue>和List<T>來改寫,現在就先試試看。
基本上這篇應該不會有什麼正式的講法,純粹是心得上的紀錄。
在第一次用Unity去build出Windows Store App的專案時,會跳出很多說不支援 Hashtable和ArrayList的描述,這時我們該用Dictionary<object, object>和List<object>來改寫。建議全改成object形式,不然就會跟我一樣要重新去看。有時候可以指定型別是string或int,要看情況。
為什麼是用object而不是Type,這是因為大部分放入的值,多半是int、string之類的object衍生型別,放入Type會有很多轉型問題。
第一次這樣做完,很容易遇到問題,就是巢狀。
有些Hashtable可能要改成List<List<object>>之類的樣子,這要由上下文去檢查。
另外是List<object>有個好處,他可以放入List<object>,比方說:
List<object> st = new List<object>();
List<object> arr = new List<object>();
st.Add(arr);
換句話說是否要專門去支援巢狀?這可能要看code以及你對於優化的要求有多少。
另外要提及javascript的變數宣告,因為要改寫 javascript的Hashtable,我發現一個變數宣告上的問題。我想大家都知道,如果不知道的話你剛好賺到了!
在C#:
List<object> st = new List<object>();
在 javascript:
var st: List.<object> = new List.<object>();
注意到dot了嗎?這一行是說名為st的變數型別是泛形List,且初始化blabla。那個dot不要忘記啊。大致上的寫法和C#一樣,在這邊微妙的不同容易出錯,請各位留意。對於泛型Dictionary的宣告也是類似的。請參考這篇文章。
首先,Windows store app不支援Hashtable和ArrayList兩個namespace。所以要改寫,在網路上找到說可以使用Dictionary<TKey, TValue>和List<T>來改寫,現在就先試試看。
基本上這篇應該不會有什麼正式的講法,純粹是心得上的紀錄。
在第一次用Unity去build出Windows Store App的專案時,會跳出很多說不支援 Hashtable和ArrayList的描述,這時我們該用Dictionary<object, object>和List<object>來改寫。建議全改成object形式,不然就會跟我一樣要重新去看。有時候可以指定型別是string或int,要看情況。
為什麼是用object而不是Type,這是因為大部分放入的值,多半是int、string之類的object衍生型別,放入Type會有很多轉型問題。
第一次這樣做完,很容易遇到問題,就是巢狀。
有些Hashtable可能要改成List<List<object>>之類的樣子,這要由上下文去檢查。
另外是List<object>有個好處,他可以放入List<object>,比方說:
List<object> st = new List<object>();
List<object> arr = new List<object>();
st.Add(arr);
換句話說是否要專門去支援巢狀?這可能要看code以及你對於優化的要求有多少。
另外要提及javascript的變數宣告,因為要改寫 javascript的Hashtable,我發現一個變數宣告上的問題。我想大家都知道,如果不知道的話你剛好賺到了!
在C#:
List<object> st = new List<object>();
在 javascript:
var st: List.<object> = new List.<object>();
注意到dot了嗎?這一行是說名為st的變數型別是泛形List,且初始化blabla。那個dot不要忘記啊。大致上的寫法和C#一樣,在這邊微妙的不同容易出錯,請各位留意。對於泛型Dictionary的宣告也是類似的。請參考這篇文章。
留言
張貼留言