unity 热更新 c# 实战经验分享(一)

demo 工程地址 :http://pan.baidu.com/s/1qWBYxqc

我们接上篇 内容继续讲 http://www.cnblogs.com/zyc-it/p/4820810.html

(1)工程分离

什么叫工程分离呢,就是要把你的游戏包(后面简称 #主工程#),和你的热更新工程(后面简称 #热更新工程#) 分离开。首先我先说一下 ,我为什么要这么做:

原因:从github 上更新下来的 jsb的工程,把所有的热更新代码写在了unity 里面了,然后在 热更新工程里面 去引用这些cs 文件。在我看来 不是真正的解耦,有些潜在的风险(直觉 ~~!)

怎么做: 很简单,我以我的demo 工程为例子,我新建了一个工程(demo里面 使用的jsb ,是我自己改过的,jsbsetting.cs 配置里面有很多东西用起来不顺手),我添加玩热更新工程之后 ,如图:

那我热更新工程怎么去引用原来的已经绑定的cs 类呢,ok,我编译一下unity 主工程 ,然后用热更新工程引用就可以了 如图

这时候在就可以放心的在热更新工程里面写代码了
请记住你在是用vs (宇宙第一编辑器,写热更新代码,我各种语法提示,高亮,很方便),我只想说,你喜欢用luastudio,记事本, 写热更新脚本,我不拦你,我丑 我用vs
 
 
(2) 命名空间保护
 
原因 :jsbsetting 里面有各种目录配置,指明 这写目录里面的 类,导出或者不导出,记住这些东西 太累啦,太不安全了。你想象吧 ,程序员写代码的时候,要记住我要导出的类,在那个文件夹里面.....
怎么做:
什么意思,我所有的导出类,都有特定的命名空间 前缀,我为什么要这样做呢,还记得 第一条经验吗,我引用主工程生成的dll 之后,我就可以用dll 特定的命名空间的里面的类了,其他的命名空间里面的类不允许,
是不安全的,是不被导出的,是非常危险的,是肯定会出错的。所以说 总结一下 让热更新工程里面的 只可以引用主工程里面特定的 命名空间,代码非常安全。
 
 
接一下 ,我会分享jsb 如何使用protobuff 作为网络协议,及其具体用法,最后欢迎大家加入jsb 群:189738580。
 

 

posted @ 2015-10-08 22:28  夜莺_yeying  阅读(5100)  评论(3编辑  收藏  举报