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。

时间: 2024-10-23 06:23:58

unity 热更新 c# 实战经验分享(一)的相关文章

unity 热更新 c# 实战经验分享(二) - 动态Protobuff协议,再也不用担心为了换条协议换包了 ~~!

先提前说明一下,如果哪位小伙伴 觉得生疏的话,可以看这篇博客的前面两个博客,里面讲述了 高大上 JSB,unity 热更新方案,用强大的宇宙第一编辑器vs 来开发 unity 热观更新脚本,更新c# 不在是梦 这次的demo 工程我已经长传了,地址 在这里http://pan.baidu.com/s/1qWQlXUW:下载后(放在D盘 放在D盘 放在D盘!!!!)里面的unity 工程直接打开然后运行main 场景 .就会出现下图,这篇博客唯一 的意义就在于这个demo,实战就是实战不跟你讲废话

我使用的 unity 热更新方案 JSB(求小编 推荐一下)

今天周五 ,明天没有什么事情,可以安心写一些博客. 今天聊 两个话题 一 , unity热更新的窘境 二 ,我所使用的unity 热更新方案JSB ======================================热更新的窘境============================================= (1)其实unity 热更新到瓶颈是 ios 的 系统本身 ,禁止你 jit .说白了,内存中代码,系统本身不让你执行. 安卓 系统,桌面 系统,本身都支持 动态直接替换d

Dubbo线程模型(结合Linux线程数限制配置的实战经验分享)

Dubbo官方文档: 用户指南 >> 示例 >> 线程模型 配置标签: <dubbo:provider/> <dubbo:protocol/> 实战经验分享(属用性能调优): Linux用户线程数限制导致的java.lang.OutOfMemoryError: unable to create new nativethread异常 # vi/etc/security/limits.d/90-nproc.conf # Default limit fornumb

Unity热更新专题(六)uLua简介

Unity热更新专题(六)uLua简介 Unity热更新的解决方案中,uLua无疑是比较好的一种. 所以我们先来介绍一下uLua. 之前文章提到的Lua以及LuaInterface的学习,都是为了学习uLua来做基础的. 关于uLua的学习,我们可以参考官网,以及官方bbs来学习.上面有详细的视频文字教程. 官网:http://www.ulua.org/index.html 官方bbs:http://bbs.ulua.org/ 学习uLua有以上资料就够了. ==================

【联想销售高手实战经验分享】做销售就一定要能喝酒吗?

联想销售高手实战经验分享 | 做销售就一定要能喝酒吗? 在中国,不喝酒真的做不了销售么?我很想知道有哪些行业或者有哪些公司的销售不用经常喝酒的? 我谈谈我自己的经历吧. 我很讨厌喝白酒,觉得难以下咽,即便是啤酒也因为怕长胖的缘故与家人朋友聚会的时候是能少喝就少喝,唯独喜欢品预调酒,经常买来喝着玩. 以下的文字里,喝酒都是喝白酒的意思. 2010年以前我都认为喝酒和做销售业绩没一毛钱关系,仅仅与哄自己领导开心有关系(以前美的的领导爱喝酒,你不陪领导喝高兴等于不给领导面子),做消费类产品的渠道销售,

Unity热更新代码

对资源的更新比较简单,把资源打包成AB文件,然后放到资源服务器上,客户端程序启动时下载AB文件,程序加载AB文件就可以了,但对与C#程序来说如何进行更新呢,可以将C#打包到Dll里,然后将Dll放到资源服务器上,客户端下载DLL 通过如下代码加载Dll WWW www = new WWW (URL);yield return www; System.Reflection.Assembly.Load (www.bytes) 需要注意的是以上代码只在Android,Windows平台可以运行,不能在

C#最良心脚本语言C#Light/Evil,Xamarin\WP8\Unity热更新最良心方案,再次进化.

C#Light的定位是嵌入式脚本语言,一段C#Light脚本是一个函数 C#Evil定位为书写项目的脚本语言,多脚本文件合作,可以完全用脚本承载项目. C#Light/Evil 使用完全C#一致性语法 目前 C#Light已经是正式版,且经商业项目检验 C#Evil是Alpha版,欢迎试用反馈. C#Evil在C#Light的基础上 从底层支持了面向对象,请注意下面是脚本代码 不同于C#Light没有函数和类的设计,(C#Light只是用C#LightFramework来模拟整个cs文件的识别,

关于线上静态页面资源更新的一些经验分享

目录 关于线上静态页面资源更新的一些经验分享 关于Linux的Patch 关于git 关于Idea 关于线上静态页面资源更新的一些经验分享 最近在负责公司的后台项目,包括了后端和前端.后端直接编译完打成jar包直接上线运行没什么问题.但是前端的页面文件更新每次都要把页面给运维,然后告诉运维路径让运维挨个替换,当然也可以整包替换, 但是如果文件比较多的情况下,整包替换就不合适了.因为现在开发的项目版本控制基本必不可少了,这时候可以利用版本控制软件来生成Patch文件,然后直接交给运维,让运维在项目

unity 热更新思路和实现

声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确保增加新资源后可以下载到本地,有资源更新的时候可以替换掉本地旧资源.我在前面写了一篇"unity 打包AssetBundle"的文章,里面生成了一个资源版本文件,不多解释了,上图.至于怎么生成这个文件的,可以看一下我前面写的文章. 废话不多说. 先介绍热更新步骤,后上代码 步骤一.在Res