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


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

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

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

所以C#Lite不會考慮從腳本內定義新的類型和函數這件事,如果要互相調用,可以讓腳本內直接調用另一個腳本。

 

image

今天帶來的是一個腳本系統控制的界面,這個界面完全是用腳本代碼產生的,這個界面系統不用腳本也可以使用,大家一看就知道是用OnGUI制作的。

首先是初始化界面

image

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

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

image

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

 

現在還是程序的寫法,接下來,見證奇跡的時刻來了。

只要把codeInit函數體內的內容完全復制到腳本文件中,就是腳本了

imageimageimage

可以看到在Unity里作為一個TextAsset存在,這就是熱更新的本質了,邏輯在資源里,不是在代碼里。

C#Lite比別的腳本語言更適合Unity的是,你完全可以把邏輯在程序里寫好,再搬運到腳本中,當然目前C#Lite還沒做到c#語法100%兼容。

這里有兩個問題要檢討一下:

一、我用了一個特別的寫法

CLUI_Node_Label label =(CLUI_Node_Label)objlabel;

而沒有使用c#中更適合的 as 表達式,就是因為C#Lite並沒有支持 as 表達式,只支持了對一個變量進行類型轉換。

另外C#Lite的數字識別不能識別0f,只能識別0。

這兩處已經加入buglist,積極改進中。

二、C#Lite的錯誤提示也不是太友好,只有幾種很簡單的提示,log不詳細,不便於識別問題,也在積極改進中。

最終目標是讓腳本和代碼可以非常輕易的互換,即使出了錯,能詳細的提示清楚哪里出錯,如何改。

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

見證奇跡的時刻

image

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM