unity热更新方案对比
Unity应用的iOS热更新
• 什么是热更新
• 为何要热更新
• 怎样在iOS 上对Unity 应用进行热更新
• 支持Unity iOS 热更新的各种Lua 插件的对照
什么是热更新
• 广义定义
• 无需关闭server,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码。
• 狭义定义( iOS热更新)
• 无需将代码又一次打包提交至AppStore,就可以更新client的执行代码,即不用下载app而自己主动更新程序。
• 现状
• 苹果禁止了C#的部分反射操作,禁止JIT(即时编译。程序执行时创建并执行新代码),不同意逻辑热更新,仅仅同意使用AssetBundle进行资源热更新。
为何要热更新
• 缩短用户获取新版应用的client的流程。改善用户体验。
• 详细到iOS平台的应用上。有下面几个原因
• App Store的审核周期难控制。
• 手机应用更新频繁。
• 对于大型应用,更新成本太大。
• 终极状态
• 不又一次下载、不停机状态下全然变换一个应用的内容。
怎样在iOS 上对Unity 应用进行热更新
• Android 应用的热更新
• 将执行代码预编译为assemblydll。
• 将代码作为TextAsset打包进Assetbundle。
• 执行时。使用Reflection机制实现代码的功能。
• 更新对应的Assetbundle就可以实现热更新。
• Android 与iOS 热更新的 异同
• 苹果官方禁止iOS下的程序热更新;JIT在iOS下无效。
• 热更新方案:Unity+Lua插件。
• 使用Lua 插件进行iOS 热更新的 原理
• Unity 热更新的注意点
• 须要更新的代码、资源,都必须打包成AssetBundle(建议使用未压缩的格式打包)
• 熟悉Unity的几个重要的路径
• Resources(仅仅读)
• StreamingAssets(仅仅读)
• Application.dataPath(仅仅读)
• Application.persistentDataPath(可读写)
• 重要路径之 之Resources
• Resources目录下的资源不管使用与否都会被打包
• 资源会被压缩,转化成二进制
• 打包后目录下的资源仅仅读
• 无法动态更改,无法做热更新
• 使用Resources.Load载入
• 重要路径之StreamingAssets
• 流数据的缓存目录
• 目录下的资源不管使用与否都会被打包
• 资源不会被压缩和加密
• 打包后目录下的资源仅仅读,主要存放二进制文件
• 无法做热更新
• WWW类载入(一般用CreateFromFile 。若资源是AssetBundle,根据其打包方式看是否是压缩的来决定)
• 相对路径。详细路径依赖于实际平台
•Application.streamingAssetsPath
• IOS: Application.dataPath + “/Raw” 或Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
• 重要路径之Application.dataPath
• 游戏的数据目录的路径(比如在Editor中的Assets)
• 非常少用到
• 无法做热更新
• IOS路径: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
• 重要路径之Application.persistentDataPath
• 持久化数据存储目录的路径( 沙盒目录。打包之前不存在 )
• 目录下的资源不管使用与否都会被打包
• 执行时有效。可读写
• 无内容限制,从StreamingAsset中读取二进制文件或从AssetBundle读取文件来写入PersistentDataPath中
• 适合热更新
• IOS路径: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
• 使用Lua 插件进行iOS 热更新的整体流程
支持Unity iOS 热更新的各种Lua 插件的对照
• uLua(asset store)
• uLua插件原生版本号,开山鼻祖
• 不会产生静态代码
• 反射机制,效率低下,速度慢,gcalloc频繁
• 已停止更新维护。不支持Unity5.x,淡出主流
• uLua & cstoLua
• 开发平台成熟稳定。Bug修复迅速
• 开发人员众多,资源丰富
• 静态方法,性能优
• 有成功商业产品案例(啪啪三国、超神战队、酷鱼吧捕鱼、绝地战警、这不是刀塔等) 鱼、绝地战警、这不是刀塔等)
• 都是基于原生版本号的改进。未来。两者会合并成一个插件
ulua http://www.ulua.org/
• sLua
• 静态方法,性能优
• 核心代码简洁
• 资源较少,开发平台不够成熟稳定
• 无 无成功商业产品案例 成功商业产品案例
• 基于原生版本号的改进
支持Unity iOS 热更新的各种Lua 插件的对照
• C#Light(L#)
• 淡出主流
• uniLua
• c#实现的Lua虚拟机,非完整方案
• 淡出主流
支持Unity iOS 热更新的各种Lua 插件的对照
然后就是 uLua 和 sLua的測试代码。
综合来看 肯定是 uLua 会更好一些。
測试结果就不弄了 , 大家能够下载PDF 自己看
unity热更新方案对比的更多相关文章
- unity 热更方案对比
现在一般使用的方案有:tulua&ulua.xlua.ILRuntime 对比: tulua&ulua 方案成熟,稳定第三方库支持 xlua 之前是为了热更修复线上bug的,腾讯发起的 ...
- unity 热更新方案ILRuntime
https://github.com/meta-42/ILRuntime 教程 https://ourpalm.github.io/ILRuntime/public/v1/guide/index.ht ...
- Unity代码热更新方案 JSBinding + SharpKit 首页
目前Unity的代码更新方案有很多,主要以lua为主. JSBinding + SharpKit 是一种新的技术,他做了两件事情: JSBinding将C#导出到 JavaScript (引擎是 Mo ...
- Unity实现c#热更新方案探究(三)
转载请标明出处:http://www.cnblogs.com/zblade/ 前面两篇文章从头到尾讲解了C#热更新的一些方案,从程序域来加载和卸载DLL,到使用ILRuntime来实现安卓和IOS平台 ...
- Unity官方发布热更新方案性能对照
孙广东 2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda • 什么是热更新 • 为何要热更新 • 怎样在iOS 上对 ...
- Unity热更新对比
https://www.jianshu.com/p/f9d90edf4a7c Unity 热更新为啥用Lua 详解 ILRuntime的优势 同市面上的其他热更方案相比,ILRuntime主要有以下优 ...
- Unity3D 热更新方案(集合各位专家的汇总)
http://blog.csdn.net/guofeng526/article/details/52662994 热更新”这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技 ...
- 【转】unity 热更新思路和实现
声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确 ...
- 腾讯开源手游热更新方案,Unity3D下的Lua编程
原文:http://www.sohu.com/a/123334175_355140 作者|车雄生 编辑|木环 腾讯最近在开源方面的动作不断:先是微信跨平台基础组件Mars宣布开源,腾讯手游又于近期开源 ...
随机推荐
- java发送udp广播包
2013-06-07 22:44 1272人阅读 评论(2) 收藏 举报 import java.io.IOException; import java.net.DatagramPacket; imp ...
- HDU - 5950 Recursive sequence(二项式+矩阵合并+矩阵快速幂)
Recursive sequence Farmer John likes to play mathematics games with his N cows. Recently, they are a ...
- 给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。
题目描述 给出每个员工每年薪水涨幅超过5000的员工编号emp_no.薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列. 提示:在s ...
- 移动端专用css
通过设置css属性 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);取消掉手机端webkit浏览器 点击按钮或超链接之类的 默认灰色背景色 设置css属性 ...
- Litjson
http://www.cnblogs.com/peiandsky/archive/2012/04/20/2459219.html JSON(JavaScript Object Notation) 是一 ...
- JS高级学习历程-16
[正则表达式] 1()小括号使用 作用:① 提高表达式优先级关系 ② 提取子字符串内容 模式单元,每个小括号都算作一个模式单元内容,按照内容的下标可以给小括号计数. var reg = /([0-9 ...
- 紫书140例题6-2 铁轨&&UVa514
某城市有一个火车站,铁轨铺设如图6-1所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨,并驶出车站.例如,出栈顺序(5 4 1 2 ...
- NETCOREAPI 跨域处理
ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源,所 ...
- LINUX中IPTABLES防火墙使用
对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List). 这里可以使用Linux防火墙netfilter的用户态工具 iptable ...
- sql server 2008r2 备份到局势网共享硬盘
首先,如果没有启用xp_cmdshell,请执行以下启用: ; ; RECONFIGURE; 1.创建映射: exec master..xp_cmdshell 'net use \\192.168.9 ...