接下來我會運用熱更新的機制,逐步製做一些例子來闡釋腳本系統如何和Unity結合。c#
腳本不限於使用C#Lite,可是C#Lite會有一些便利之處,請往下看。函數
結合機制也不限於這一種,可是C#Lite的設計比較傾向於,不讓腳本管理狀態,不讓腳本循環執行,每一段腳本就至關於一個函數。spa
因此C#Lite不會考慮從腳本內定義新的類型和函數這件事,若是要互相調用,可讓腳本內直接調用另外一個腳本。設計
今天帶來的是一個腳本系統控制的界面,這個界面徹底是用腳本代碼產生的,這個界面系統不用腳本也可使用,你們一看就知道是用OnGUI製做的。3d
首先是初始化界面code
咱們經過這樣一個函數創建瞭如上界面,先不用關心界面系統,只是讓腳本不用頻繁調用,作了一個樹結構把界面元素狀態起來。blog
而且指定了按鈕一按下時執行腳本 btn01_click.cls腳本,按鈕二按下時執行腳本btn02_click.資源
在Start中調用codeInit 這個界面就出現了get
如今仍是程序的寫法,接下來,見證奇蹟的時刻來了。it
只要把codeInit函數體內的內容徹底複製到腳本文件中,就是腳本了
能夠看到在Unity裏做爲一個TextAsset存在,這就是熱更新的本質了,邏輯在資源裏,不是在代碼裏。
C#Lite比別的腳本語言更適合Unity的是,你徹底能夠把邏輯在程序裏寫好,再搬運到腳本中,固然目前C#Lite還沒作到c#語法100%兼容。
這裏有兩個問題要反省一下:
1、我用了一個特別的寫法
CLUI_Node_Label label =(CLUI_Node_Label)objlabel;
而沒有使用c#中更適合的 as 表達式,就是由於C#Lite並無支持 as 表達式,只支持了對一個變量進行類型轉換。
另外C#Lite的數字識別不能識別0f,只能識別0。
這兩處已經加入buglist,積極改進中。
2、C#Lite的錯誤提示也不是太友好,只有幾種很簡單的提示,log不詳細,不便於識別問題,也在積極改進中。
最終目標是讓腳本和代碼能夠很是輕易的互換,即便出了錯,能詳細的提示清楚哪裏出錯,如何改。
好,接下來就讓腳原本處理界面,讓代碼下崗
見證奇蹟的時刻
簡單,把函數註釋掉,直接執行一個腳原本解決問題。
運行場景,獲得和代碼執行完美一致的效果。