CSLight学习笔记结合NGUI
来源:互联网 发布:淘宝找果服务靠谱吗 编辑:程序博客网 时间:2024/05/16 16:14
这两天一直在研究CSLight,目前Unity热更新的方式有两种,一种是ulua这个网上的例子已经很多了。还有一种就是CSLight。其实我更希望CSLight可以趋向成熟,因为它的语法就是C#,但是有些C#的标准语法用不了。这两天我学习的做了一个例子,也把我遇到的坑记录一下。结合上章NGUI研究之李剑英的CSLight入门指南结合NGUI热更需要的朋友可以看下。
1.在github上下载CSLight,当我把DLL拖进项目的时候会报错。原因是CSLight的dll和NGUI的冲突了,所以我直接把他的core文件夹代码全部拷贝在我的工程里面。
2.脚本可以直接就创建成.cs文件,这样可以利用unity的语法提示。李总真是太聪明了哈哈。
3.脚本与类之间传递参数。。如下脚本所示,调用脚本UIMain中的Start()方法,并且将名子作为参数传递了进去。
ScriptMagr是李总封装的脚本管理类,是一个静态类。因为我们在脚本中可能会用到一些数据对象,需要提前注册一下,每次打开界面都去注册一下显然不太好。LoadProject()等于就是开游戏的时候注册一下,以后直接就去用。
大家注意看RegTypes()里面的注册方法。把你的脚本中用到的类,可以是unity提供的类,可以是NGUI提供的类,也可以是你自己封装的类都在这里注册一下,只有注册了你的脚本里才能使用这些方法。
假如界面Prefab在Assetbundle里面热更新了,那么脚本也对应需要更新,比如之前的界面只有一个按钮,那么新更新一个界面有两个按钮了,那么需要给新增加的按钮加监听事件。先看看下面可以热更新的这条脚本。
代码写完你会发现几乎和C#的脚本万全一样,但是有几个比较恶心的地方。
1.不支持范型。
热更新的这样的代码就不能直接使用了。
Resources.Load<GameObject>
gameObject.GetComponent<UISprite>
2.不支持typeof()关键字
3.不支持代理事件。
用NGUI做界面,可能里面用了大量的UIEventListener ,比如按钮、精灵的位移动画等等。这种东西如果硬要在脚本里面写太蛋疼了。我觉得最好还是把代理相关的东西拿出来。
还有就是做界面的时候可能会用到一些定时器,如果用代理来做的话也需要改改,总之向这种delegate回调的地方应该都要封装成方法,然后在回调进脚本里面。
在上面的代码中,我在处理按钮的点击事件的时候。如下代码所示,我写了一条Unity的脚本,在热更新的脚本里面,通过类名.就可以直接访问方法并且传递参数。UIEventListener监听到事件以后,在回调一下热更新脚本中的方法。
注:我也不是CSLight的高手,也是最近开始学。感谢作者给我了很大帮助,他的游戏项目中大量的使用CSLight。据说效率还可以,这两天我在好好测试一下它的效率,希望有经验的朋友可以分享一些。谢谢啦
- CSLight学习笔记结合NGUI
- NGUI学习笔记
- 2.NGUI学习笔记
- NGUI学习笔记
- NGUI学习笔记(摘)
- NGUI学习笔记(摘)
- NGUI学习笔记--用法
- NGUI学习笔记
- NGUI学习笔记汇总
- NGUI 学习笔记
- NGUI学习笔记
- NGUI学习笔记(摘)
- NGUI学习笔记(详细)
- NGUI入门学习笔记
- NGUI学习笔记
- NGUI学习笔记
- 学习NGUI笔记
- unity3d学习笔记(十一)--NGUI结合Shader制作小地图
- IOS公司开发者账号申请详细教程
- Python语言(二)类型
- linux基础--linux编程基础
- MYSQL用法(七) 存储过程语法及实例
- 安徽美协王新胜四尺山水《帰鱼图》
- CSLight学习笔记结合NGUI
- ym——Android如何支持多种屏幕
- 黑马程序员-- Java基础---> String类与包装类
- linux配置java环境变量(详细)
- Java日期格式转换-yyyy-MM-dd HH:mm:ss转换为yyyy-MM-dd
- RequireJS 与 SeaJS 的异同
- poj 1988 Cube Stacking 带权并查集
- 黑马视频学习笔记-进制与内存(二)-进制
- 转:RGB与YCbCr颜色空间的转换(高精度测试)