http://www.manew.com/thread-114496-1-1.html

谈到目前的代码热更方案:没什么特别的要求

toLua(效率比sLua高)

打算以传统方式更新,热更仅仅用于紧急更新 / 希望战斗等性能敏感部分也能更新

xLua(性能在Lua系列中一般,但额外支持HotFix,可以更多使用C#代码)

基本上普通的项目也就只能用这两,也就是只有Lua一条路可走。

然而,由于Lua自身缺少编译期间语法检查以及缺乏必要的语言特性,在熟练的开发者手里开发效率和健壮性其实是不如其他强类型语言的。

——这点可能会有异议,我只能这么讲:使用强类型语言的程序员都会有一些增加开发效率和代码健壮性的“小技巧”,但这些技巧必须依附于语言特性以及某些只在强类型语言上才能使用的IDE功能。而且这样做的优势更多体现在项目的后期,也和团队的协作模式有关,没接触到的人可能确实无法理解。

一些人可能会觉得lua比C#更好用,但在另一些人手里C#也确确实实能够比lua提供更多的开发效率,保证更低的BUG概率,你不能因为自己“不知道,不用”,而认为他们的需求不存在。

现有的可使用强类型语言的代替方案如下:

使用ILRuntime解释器(C#解释器)

使用JS解释器(V8),并且使用TypeScript

依然使用Lua解释器,但是使用一门强类型语言编程,并翻译至Lua

ILRuntime解释器

按一般的思路来看,用ILRuntime是比较正统的解决方案,如果由Unity官方来推动代码热更的话恐怕就是这个,毕竟没有哪个语言在提供代码热更的方案的时候,会主动换成另外一个脚本语言(点击此处了解)

而且相比其他更冷门的解决方案,ILRuntime还是有一些实际产品的。

优点应该无需臃述,现在单说缺点:

在可使用JIT的安卓环境下,ILRuntime其实比lua拥有更好的性能。但是在不能使用JIT的IOS环境下,虽然在普通的API调用方面和lua差距不大,但是在纯粹的简单数值计算,循环,数组存取上,确实和lua有着非常大的差距(下图的最后两个Test)

虽然这个测试结果看上去很严重,但毕竟Test9是这样的测试代码

用来作为慢18倍的依据恐怕并不合适。

而在Test8里

只是循环内多了几个简单计算,两者之间的差距就缩小了很多(仅3倍)。

由于ILRuntime在调用C#API时效率比Lua更高(无需类型转换),综合判断,在实际的项目里很可能差距也就2,3倍,这并非不能接受的。在安卓JIT下更是可以和Lua拉平。

因为和外部的非热更代码使用的是同一语言,穿透调用性能较高,将性能敏感的代码移动到非热更区域会比Lua更加容易,细心处理搞不好性能还会更高。

如果实在担心ILRuntime的性能问题。其实可以去查一下python和lua的性能对比——ILRuntime还真不一定比“一切皆对象”的python慢。

而网易的手游基本都是python,这个信息对说服老板使用此方案应该会有比较大的帮助。

此外,还有位老兄仿造xlua写了一个基于ILRuntime的HotFix方案(点击此处查看)

这样给予了这个方案更大的使用灵活性,可以选择新版本使用最高效的il2cpp代码,而旧版本通过热更部分使用效率较低的ILRuntime代码。这样虽然ILRuntime部分比lua慢,但是占比更大的il2cpp部分则比lua快,整体上反而比lua方案效率增加了。

而且不同与xLua,HotFix和正常更新并存的方案并不需要两套代码,实现成本其实不高。

(但要注意这库是个新库,虽然ILRuntime本身是经过验证的方案,但他新加这套东西不好说有没有问题,想用C# HotFix就要承担这个风险。)

TypeScript

有人用,但我不了解,跳过吧。

由强类型语言翻译至Lua

最理想的做法,是直接将C#翻译成Lua。(点击此处查看)

但据使用过的人评价,这个库效果并不稳妥。没用过,所以此言论仅供参考。

这里要说的是另一个转换方案(点击此处查看)

HaXe这个语言应该大部分人都没听说过,它本身就是一个“翻译成其他语言”以实现跨平台的语言,所以没有厂商背书也没有社区影响,因为这个理由一直很冷。

但是在现在这个状况下,还真没有比这个更好的选择了。

首先HaXe生成lua在coscos时代还真有项目这么用,它在生成lua代码这方面的能力起码被证实了。语言本身是ECMA系的,没有学习难度,大概是个TS+AS的混合体,包括类型推断等现代语言特性,至少是不比C#差的。唯一缺少的是方法重载,但是有不定向的参数默认值作为代替。

除此之外还有一些奇怪的语法糖特性,但是可以不用了解。

虽然需要学习新语言,但毕竟它没有自己的标准库,长得也和现有的语言差不多,其实是没啥学习难度的。

事实上也没有使用风险,因为它其实就是一个广义的lua编辑器,最后输出到Unity工程目录的只有一个lua文件,可以搭配其他lua方案使用。

此外,它也支持输出成C#源文件,也可以方便的把性能敏感代码转移到非热更部分。(点击此处查看)

不过Haxe直接用到Unity上还需要稍微做些工作。因为HaXe是强类型语言,你必须生成一组桥文件才能让它调用Unity的API,和Lua需要生成的C#类桥文件差不多。这个库给了生成的工具。

另外带了几个lua文件桥接了lua的一些功能(比如说协程)

HaXe的桥文件,实质就是指示翻译器在翻译成目标语言的途中让某些代码保持原样,顺带实现代码提示。学会这个用法后,就可以方便地写出自己的扩展,不用担心和其他语言的通信难度问题。https://haxe.org/manual/lf-externs.html。

这个库也是前天才创建的新库,但实际上主要是个示例工程,因为HaXe其实本来就可以直接用在Unity+???Lua上的。

现在也基本能用了,至少在我看来,HaXe这个方案是目前成本最低的,最安全的“干掉天杀的Lua”的办法。

知乎@flashyiyi

unity 热更方案对比

现在一般使用的方案有:tulua&ulua.xlua.ILRuntime 对比: tulua&ulua 方案成熟,稳定第三方库支持 xlua 之前是为了热更修复线上bug的,腾讯发起的 ...

unity热更新方案对比

Unity应用的iOS热更新 •  什么是热更新 •  为何要热更新 •  怎样在iOS 上对Unity 应用进行热更新 •  支持Unity iOS 热更新的各种Lua 插件的对照 什么是热更新 • ...

unity 热更新方案ILRuntime

https://github.com/meta-42/ILRuntime 教程 https://ourpalm.github.io/ILRuntime/public/v1/guide/index.ht ...

lua热更框架之XLua

框架介绍 xLua是当下最流行的unity热更方案之一,作者是腾讯的车雄生前辈,自2016年初推出以来,已经在腾讯的多款游戏项目上应用,目前xLua已经开源到了GitHub.xLua最大的特色是不仅支 ...

Unity3D 热更新方案总结

如何评价腾讯在Unity下的xLua(开源)热更方案? Unity 游戏用XLua的HotFix实现热更原理揭秘 腾讯开源手游热更新方案,Unity3D下的Lua编程 [Unity]基于IL代码注入的 ...

Unity热更新对比

https://www.jianshu.com/p/f9d90edf4a7c Unity 热更新为啥用Lua 详解 ILRuntime的优势 同市面上的其他热更方案相比,ILRuntime主要有以下优 ...

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5% ...

Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建

前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...

React Native拆包及热更新方案 · Solartisan

作者:solart 版权声明:本文图文为博主原创,转载请注明出处. 随着 React Native 的不断发展完善,越来越多的公司选择使用 React Native 替代 iOS/Android 进行 ...

随机推荐

微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析

作者:蒸米@阿里移动安全 序言 微信作为手机上的第一大应用,有着上亿的用户.并且很多人都不只拥有一个微信帐号,有的微信账号是用于商业的,有的是用于私人的.可惜的是官方版的微信并不支持多开的功能,并且频 ...

lightoj1348

//Accepted 6004 KB 924 ms /* source: lightoj1348 time :2015.5.29 by :songt */ /*题解: 树链剖分 */ #include ...

ES6新特性(函数默认参数,箭头函数)

ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

Linux创建LVM

###########format disk############ 格式化磁盘,将其SystemId修改为8e fdisk /dev/sdb n p 1 [enter] [enter] t 8e w ...

JS点击复制

unity python做热更_Unity热更方案汇总相关推荐

  1. unity python做热更_[专栏作家]基于ILRuntime的完整C#热更方案

    原标题:[专栏作家]基于ILRuntime的完整C#热更方案 好久不见.最近一段时间公司二次创业,实在是忙的脚打后脑勺,有段时间没来跟大家分享心得了,昨天终于有了一个初步的完结,也终于有时间和精力跟大 ...

  2. unity python热更新_Unity热更新介绍和测试方法

    最近项目中增加了热更新了功能,程序也完成了相应的开发,接下来就需要对这个模块进行相应的测试工作了,在测试开始之前,了解下其原理总是很有好处的. 1:什么是热更新 简单的理解就是:用户重启客户端就能实现 ...

  3. GitHub热榜第一,标星近万:这个用Python做交互式图形的项目火了

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI GitHub上,一份用Python做交互式图形的资源火了. 这一工具名为Bokeh,官方介绍称,它能读取大型数据集或者流数据,以简单快速的 ...

  4. 最近很火的数据动图python_GitHub热榜第一,标星近万:这个用Python做交互式图形的项目火了...

    乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI GitHub上,一份用Python做交互式图形的资源火了. 这一工具名为Bokeh,官方介绍称,它能读取大型数据集或者流数据,以简单快速的方 ...

  5. 自学python能干些什么副业-揭秘!女程序员为啥更赚钱?这4个大招,用Python做副业躺赚...

    原标题:揭秘!女程序员为啥更赚钱?这4个大招,用Python做副业躺赚 关于穷,去年有了一个更学术的说法:隐形贫困人口. 就是因为有太多"种草达人",让我们为了物质生活超前消费,再 ...

  6. python热搜排行功能_用Python做一个微博热搜榜的语音播报

    微博是一个社交平台,有高效的信息流,几乎所有人能在这上面找到自己感兴趣的内容.经常使用微博的小伙伴,大家对微博热搜榜应该都不会很陌生.每天发生了什么新闻呢,谁谁谁又上热搜了. 在这个信息社会,每天发生 ...

  7. UE4 版本迭代、资源热更、pak更新方案

    本文链接:https://blog.csdn.net/BDalasja/article/details/95622429 UE4 版本迭代.资源热更.pak更新方案 注意:以下讨论的内容是客户端热更, ...

  8. python做脚本语言要了解什么_你真的了解Python吗?本文可以让你对Python了解更深入...

    人们为什么使用Python? 之所以选择Python的主要因素有以下几个方面:软件质量:在很大程度上,Python更注重可读性.一致性和软件质量,从而与脚本语言世界中的其他工具区别开发.此外,Pyth ...

  9. luajit集成篇/平台相关篇 | 合理用好lua+unity,更省性能的方案整理

    luajit集成篇 大家都知道luajit比原生lua快,快在jit这三个字上. 但实际情况是,luajit的行为十分复杂.尤其jit并不是一个简单的把代码翻译成机器码的机制,背后有很多会影响性能的因 ...

  10. controller层没反应_热拉提一年做几次?热提拉的副作用根本没在怕的~

    热拉提一年做几次?热提拉的副作用根本没在怕的~传说在一片神秘的土地,有一汪神奇的泉水,名曰:青春不老泉.任何人只需一品,即保持青春不老.然而,传说毕竟只是传说--继热玛吉.超声刀之后,全球新一代逆龄神 ...

最新文章

  1. 发布AI操作系统、应用市场,开源机器学习数据库和AI操作系统内核,第四范式这波操作有点秀!
  2. lnmp下安装PECL HTTP 扩展
  3. 物联网设计四大独特挑战的解决方案
  4. KMP算法的动态规划解说
  5. stm32的dma缓冲区长度,,存放数据数组会不会冲掉
  6. linux中死锁的概念,【Linux】死锁概念总结
  7. Scott Mitchell 的ASP.NET 2.0数据教程之五:: 声明参数
  8. JavaWeb — session+Cookie
  9. ELK详解(二十一)——elastalert介绍与安装
  10. iso镜像添加软件包_iso镜像文件怎么安装 安装镜像文件的方法【图文】
  11. Python 文件路径
  12. PDM系统与PLM系统
  13. 心理学的应用领域有哪些?
  14. 公司找域名怎么找?有什么技巧?
  15. 【高级篇 / SDWAN】(7.0) ❀ 03. SD-WAN 链路负载均衡的模式 ❀ FortiGate 防火墙
  16. 日常 --- watch的使用
  17. 生物信息学算法之Python实现|Rosalind刷题笔记:001 碱基统计
  18. 2021UpdateC#.NET笔试题高级进阶篇
  19. Python–cookbook–1.数据结构与算法
  20. 那些困扰你多年的项目管理问题,终于有解决方案了!

热门文章

  1. TrueLaunchBar 4.2
  2. Windows Live SkyDrive 介绍之图片存储:摄影师在线图片展示的新选择
  3. 数学建模 线性规划报告_春哥带你学建模数学建模国赛基础入门班(适合小白/零基础)...
  4. laravel 生成二维码
  5. 计算机本科生论文都抽查什么,本科生毕业论文抽查,抄袭马上会被撤销学位,学生最好别违规...
  6. 中国高铁砥砺前行,促进经济腾飞
  7. device or resource busy问题处理
  8. matlab分析地形,基于Matlab的地形数据处理
  9. docker 自动签到模板制作
  10. 最详细的Pycharm使用技巧 2020.06.06