当前位置:首页 » 编程软件 » 游戏脚本lua热更新

游戏脚本lua热更新

发布时间: 2023-09-20 18:40:45

❶ unity中lua 是怎么运行原理

lua 是脚本语言
也就是说它在运行之前不需要进行编译
这个特点让它能灵活的实现热更新的特性,只需要改变lua脚本文档中的内容就能实现代码更新。但缺点也显而易见,不进行编译而通过解释器一行一行运行的代码会严重的降低执行效率

❷ Unity3D开发中热更新为什么不能使用C#的思考

阅读了网上一些文章,其实使用C#进行热更新是可以的,将需要更新的代码打包成程序集,然后利用反射即可,但是也提到在IOS平台是不行的,至于为什么不行,就不再说了,然后就是推荐Lua作为热更新方案,但是,为啥Lua就行?C#就不行?
因为C#是编译型语言,Lua是解释型语言?
好多人都说Lua能热更新,是因为它是解释型语言,不用编译,在运行时能动态解释Lua代码并运行。这种方法实际上不准确,从某些角度来说是错的。Lua确实是解释性脚本语言,但是不是因为是解释型才能进行热更新。即使使用C++这种编译语言,也能进行热更新,将动态链接库进行更新就是,然后动态加载动态链接库获取更新的函数地址即可。
而且,还有一点,C#并不能说是一种编译型语言,C#代码会被编译成IL,IL解释成机器码的过程可以在运行之前进行也能在运行时进行。如果在运行时进行解释,那么和Lua不就一样了吗,为啥C#不能进行热更新呢?
JIT对IL进行解释执行的原理
首先说一下,JIT对IL如何在运行时进行解释并执行的,大致过程为:将IL解释为所在平台的机器码,开辟一段内存空间,要求这段内存空间可读、可写、可执行,然后把解释出的机器码放入,修改CPU中的指令指针寄存器中的地址,让CPU执行之前解释出来的机器码。
注意这段内存的条件,最重要的一条是必须是可执行的,一般的内存申请我们只是存放数据,但是这里的内存权限要是有可执行权限
IOS限制了什么?
IOS不允许获取具有可执行权限的内存空间,这就直接要求JIT要以full AOT模式,这种模式会在生成之前把IL直接翻译成机器码而不是在运行期间,进行了这种操作C#从某种角度来说和C++一样,成为了编译型语言,失去了运行时解释的功能。
Lua的解释执行怎么就行呢?
如果Lua的解释执行原理和C#相同,肯定也不能在IOS平台上运行时解释执行。Lua是使用C编写的脚本语言,它在运行时读入Lua编写的代码,在解释Lua字节码(Lua自己的指令)时不是翻译为机器码,而是使用C代码进行解释,不用开辟特殊的内存空间,也不会有新代码在执行,执行的是Lua的虚拟机,用C写出来的虚拟机,这和C#的机制是完全不同的,因为Lua是基于C的脚本语言。
总结
说白了,就是由于Lua这种脚本语言的特性,基于已经存在的某种语言的一种新的语言,这也是脚本语言和C#、C++这类语言的本质区别。当然,Lua虚拟机不仅可以使用C写,也可以用C#写。使用热更新也不一定非要用Lua,Python同样可以,只不过Lua短小精悍,本身代码长度就不是很大,可以从GitHub上看到。

❸ 苹果现在禁了热更新,那用wax+lua进行热更新会被禁么

由于lua作为开发脚本,本身能够调用的功能是确定、有限的,所以相对来说比较安全

重灾区为JSPatch和Rollout.io这两个框架,几乎100%收到警告邮件无一幸免。


以上都是摘抄的,我是这么认为的,也相信苹果是流氓的,但不至于所有的都禁止了。

❹ slua,ulua,nlua,unilua这几种unity3D的lua插件各有什么优劣

请选用ulua、一段音频一样更新LUa其实也是更新资源,但是支持WP(其他也支持)!很多人在用,很多坑都已经被人采完。个人比较看好Slua的发展,我是新手不了解,加之toluac提供了直接访问渠道:ulua包含两种c模式(luajit版+原生luavm版),所以成为它与生俱来的诟病。网上还有说nLua的。看看权威的解释。所以追求效率的、Slua,这个对于项目开发我认为暂时比性能重要,所以如果ulua支持WP需要第二种原生luavm的底层库,因而Lua能轻松实现“热更新”,像CToLua。Lua被看作一个资源么,它支持全,都是文件资源。但是ulua因为底层使用luajit,因此效率略低于ulua,而luajit目前不能在WP使用。但是缺少toluac的支持;所以更新逻辑只需要更新脚本,不需要再编译。但是Ulua是很成熟的,不运行的时候就如同一张图片。目前有对他的改进。当然了还有李总的L走的就不是Lua的路。Lua代码都是运行时才编译的,因为c版本底层用的原始的luavm(非luajit)。运行效率由于使用反射。nlua包含2种模式(KeraLuac版本)(KopiLuac版本)

热点内容
四大基础数据库 发布:2024-11-19 01:39:53 浏览:692
androidtabhost滑动 发布:2024-11-19 01:39:50 浏览:125
斗鱼抢火箭脚本 发布:2024-11-19 01:32:44 浏览:514
怎么改微信支付的密码忘了怎么办啊 发布:2024-11-19 01:29:08 浏览:714
c语言inti 发布:2024-11-19 01:27:33 浏览:605
登录政务服务网如何保存密码 发布:2024-11-19 00:59:05 浏览:9
怎么登陆appleid密码忘了怎么办啊 发布:2024-11-19 00:29:54 浏览:656
极地大乱斗挂机脚本 发布:2024-11-19 00:29:01 浏览:421
iphone怎么新建文件夹 发布:2024-11-19 00:24:37 浏览:914
免费代理服务器ip和端口怎么用 发布:2024-11-19 00:20:10 浏览:880