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

简单,把函数注释掉,直接执行一个脚原本解决问题。

运行场景,获得和代码执行完美一致的效果。

相关文章
相关标签/搜索