只要有程式設計師朋友們問過兩次的問題
就會收錄在此FAQ中
1.C#Light對比LUA有什麼好處
C#Light是靜態型別指令碼語言,語法同C#,Lua是動態型別指令碼語言,這兩種都有人喜歡。
我更喜歡靜態型別,於是有了C#Light
2.C#Light效能怎麼樣
C#Light和Unilua 和ulua都做過簡單效能測試,比Unilua快,和ulua各有勝負
3.C#Light IOS可以使用麼
完全可以,均妥善測試
4.為什麼C#Light例子和NGUI一起用會編譯不過
因為Unity沒有庫的概念,要每個專案裡都放一份原始碼,這樣會讓GITHUB程式碼變得非常凌亂。
所以在例子裡是直接把C#Light 的DLL放進來了.
實際要改例子的話,請刪除CSLightEvil35.DLL,直接從CORE中找到C#Light的原始碼,C#LE目錄,然後將這個目錄直接插入Unity專案。
5.為什麼C#Light有那麼多限制,使用型別還要註冊
因為C#Light的設計之初就為了相容AOT拋棄了很多,而相容AOT就是為了能在IOS上順利使用。
為此,我們不能執行時產生新的IL型別,所以不能繼承程式的型別。所以指令碼class型別和程式class型別不同
不能執行時模板推斷,所以不能自動List<T>,要手動繫結List<int>,List<String>
不能執行時模板推斷,所以不能自動呼叫GetComponent<T> 這類方法,改呼叫 GetComponent(“UILabel”) as UILabel
這些限制都是由AOT相容導致,用一點點約束,換來IOS的相容性,還是值得的
6.C#Light出錯怎麼查
有統一的Dump機制,在Unity3D熱更新全書-指令碼(三)有介紹
7.C#Light的程式碼放在StreamingAssets裡是什麼意思,真的能熱更新麼
真的可以熱更新,你把例子生成exe,改了streamingassets的指令碼,再執行就會有效果。
放在StreamingAssets裡是為了演示可以在執行時載入字串處理,同時例子比較容易看
實際專案還是要把指令碼獨立放出來,在Unity3D熱更新全書-指令碼(四)有介紹