菜鸟学习 - Unity中的热更新 - 更新思路

我们游戏对资源的更新并没有使用AssetBundle.

而是采用了下面的解决方案(客户端C# 和服务器 Java的约定 ,传输协议都是json):

第一步:客户端与服务器约定一个版本号。
第二步:客户端向服务器发送本地的一个版本号(不同的玩家,本地的版本号的信息肯定也不一样),服务器比对最新的版本号与客户端本地的版本号,过滤出需要更新的文件列表。把最新的版本号和需要更新的文件列表发送给客户端。
第三步:客户端下载需要更新的文件列表,直到下载完毕,然后重写本地的版本号。

对脚本的更新也是采用成熟的Ulua方案。

其中最近研究了一下 俊擎网络的 Simple Framework v0.2.7    http://www.ulua.org/

这个框架很到位。

Lua脚本本身被看作资源处理的, 但是也有特殊性

1.打包时,把游戏中的LUA脚本资源打包成ZIP。
2.玩家第一次启动游戏中,解压缩Lua脚本的ZIP文件到本地。(只执行一次,之后更新Lua就和普通资源一样)

                 开源库:http://icsharpcode.github.io/SharpZipLib/
3.在玩家每次启动时,执行上面的【更新资源】的三步。

时间: 2024-11-02 20:18:41

菜鸟学习 - Unity中的热更新 - 更新思路的相关文章

菜鸟学习 - Unity中的热更新 - Lua和C#通信

孙广东 2015-4-6 热更新我是个菜鸟,感谢网上的各位的奉献,这次又当一回搬运工. 准备: 1.了解Lua的语法 推荐书籍<Lua程序设计 第二版> 2.使用ULua插件进行通信 尽量早上真机.因为Bug问题特别多. 大杂烩: 更新LUa其实也是更新资源. Lua被看作一个资源么.Lua代码都是运行时才编译的,不运行的时候就如同一张图片.一段音频一样,都是文件资源:所以更新逻辑只需要更新脚本,不需要再编译,因而Lua能轻松实现"热更新".运行效率由于使用反射,所以成为它

菜鸟学习 - Unity中的热更新 - LuaInterface用户指南

[由于学习,所以翻译!] 1.介绍 LuaInterface 是 Lua 语言和 Microsoft.NET 平台公共语言运行时 (CLR) 之间的集成库. 非常多语言已经有面向 CLR 编译器和 CLR 实现,已经存在为微软windows. BSD 操作系统和 Linux 操作系统. Lua是一个为扩展应用程序而设计的编程语言,解释运行,非常容易嵌入的库.具体的信息能够參考Lua'sreference manual. 以下的部分介绍如何编译和安装LuaInterface.第3部分包括了在CLR

3D语音天气球——在Unity中使用Android语音服务

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3D语音天气球(源码分享)--创建可旋转的3D球 二:通过天气服务,从网络获取时实天气信息并动态生成"3D球":3D语音天气球(源码分享)--通过天气服务动态创建3D球 三:Android语音服务和Unity的消息传递 四:Unity3D端和Android端的结合 前两篇文章已经介绍了如何创

Unity官方公布热更新方案性能对比

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  如何在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对比 什么是热更新 ? 广义定义 ? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即

Unity官方发布热更新方案性能对照

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  怎样在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对照 什么是热更新 ? 广义定义 ? 无需关闭server,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码又一次打包提交至AppStore,就可以更新clien

Unity实现c#热更新方案探究(一)

最近研究了一下如何在unity中实现c#的热更新,对于整个DLL热更新的过程和方案有一个初步的了解,这儿就写下来,便于后续的深入调查和方案选择. 一.C# DLL的动态加载和卸载 既然要热更新,那么就是动态的加载c#的DLL,所以第一步就是研究如何实现DLL的动态加载和卸载. 在CLR Via C#中,对于DLL的加载有详细的讲解,这儿就不再长篇幅的讲解整个过程,简单的来说,在C#的工程中,都会生成一个默认的程序域appDomain,就叫做DefaultAppDomain吧,在这个程序域的基础上

oracle菜鸟学习之 复杂的更新语句使用

oracle菜鸟学习之 复杂的更新语句使用 实例与答案 问题:表T1里有a,b,c...N个字段,表T2里有a,b,c三个字段,然后想在T1中"c"与表T2中"c"相同的情况下,从表T2中将a,b覆盖表T1中的a,b,怎么做? 实验表: create table T1(a int,b int,c int,d int,e int); create table T2(a int,b int,c int); insert into T1 values(1,2,3,4,5)

【安全牛学习笔记】网络配置、更新升级、安装软件包、浏览器插件

[email protected]:~# dhclient eth0       //用来通过 dhcp 协议配置本机的网络接口 [email protected]:~# ifconfig     查看现在的ip地址 [email protected]:~# ifconfig eth0 192.168.1.10/24        // 配置ip地址 [email protected]:~# ifconfig eth0                //查看配置ip地址 [email prote

我的MYSQL学习心得(八) 插入 更新 删除

这一篇<我的MYSQL学习心得(八)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition) INSERT INTO SELECT 在SQLSERVER里也是支持的 table_name1指定待插入数据的表:column_list1指定