Unity 熱更新實例1、C#Light 和UI系統使用實例

接下來我會運用熱更新的機制,逐步製做一些例子來闡釋腳本系統如何和Unity結合。c#

腳本不限於使用C#Lite,可是C#Lite會有一些便利之處,請往下看。函數

結合機制也不限於這一種,可是C#Lite的設計比較傾向於,不讓腳本管理狀態,不讓腳本循環執行,每一段腳本就至關於一個函數。spa

因此C#Lite不會考慮從腳本內定義新的類型和函數這件事,若是要互相調用,可讓腳本內直接調用另外一個腳本。設計

 

image

今天帶來的是一個腳本系統控制的界面,這個界面徹底是用腳本代碼產生的,這個界面系統不用腳本也可使用,你們一看就知道是用OnGUI製做的。3d

首先是初始化界面code

image

咱們經過這樣一個函數創建瞭如上界面,先不用關心界面系統,只是讓腳本不用頻繁調用,作了一個樹結構把界面元素狀態起來。blog

而且指定了按鈕一按下時執行腳本 btn01_click.cls腳本,按鈕二按下時執行腳本btn02_click.資源

image

在Start中調用codeInit 這個界面就出現了get

 

如今仍是程序的寫法,接下來,見證奇蹟的時刻來了。it

只要把codeInit函數體內的內容徹底複製到腳本文件中,就是腳本了

imageimageimage

能夠看到在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不詳細,不便於識別問題,也在積極改進中。

最終目標是讓腳本和代碼能夠很是輕易的互換,即便出了錯,能詳細的提示清楚哪裏出錯,如何改。

好,接下來就讓腳原本處理界面,讓代碼下崗

見證奇蹟的時刻

image

簡單,把函數註釋掉,直接執行一個腳原本解決問題。

運行場景,獲得和代碼執行完美一致的效果。

相關文章
相關標籤/搜索