![[RS] xLua从LuaJit升级Lua5.3记录,第1张 [RS] xLua从LuaJit升级Lua5.3记录,第1张](/aiimages/%5BRS%5D+xLua%E4%BB%8ELuaJit%E5%8D%87%E7%BA%A7Lua5.3%E8%AE%B0%E5%BD%95.png)
1、Windows
2、Centos(用来编译Android)
我们项目需要cjson跟pbc,所以要添加拓展。
同时添加修改:
1、Android运行报错
Lua 535之前的版本没有支持通用字节码,这个折腾了两天时间Orz。所以不能使用Lua 533版本。
参考文章
UWA开源库:uLua Project
lua cjson 数字问题
public struct Vector3 ,是一个struct 结构体,值类型。
主要优化 减少gc + 减少lua与C#的交互。
lua中有2种方式可以表示Vector3:
lua中 aTransformposition获取Vector3坐标:
lua中 aTransformposition = Vector3坐标:
toLua用lua重新实现了Vector3,包含所有方法;文件地址: tolua-master\Assets\ToLua\Lua\UnityEngine\Vector3lua
toLua并没有跟Unity C#交互
lua中 aTransformposition获取Vector3坐标:
xLua支持的struct类型宽泛的多,包含枚举,用户要做的事情也很简单,用GCOptimize声明一下类型即可。支持自定义struct。(struct要求1含无参构造函数 2只包含值类型,可以嵌套其它只包含值类型的struct)
我认为xlua的概念很好,很多人用lua就是为了热更新,如果没有热更新的需求,大多数人是不喜欢lua,或者所谓的脚本开发的,xlua很好的解决了这部分人得需求。
但我有一点其他看法,我04年毕业在网易工作的时候,网易的游戏都是基于脚本的,不管是客户端,还是服务器端,那个时候不是lua,就是python,还有一种是类似c语法的脚本(我忘记名字了),这个是云风主导的,当时选择脚本作为逻辑开发语言的核心想法不是为了热更新,而是解决
1)划分引擎层和业务层,svn管理好权限,让新来的同学,接触不到核心引擎的代码权限,他们只能在脚本层做业务,等你对业务足够熟悉,对引擎足够了解,对公司足够忠诚后,才开放引擎层代码,这么做早年是为了解决私服问题,很多同学拿着全部源代码去架设私服,这多可怕,所以做业务的程序员只能拿到一个编译后的app和一份脚本接口文档,而编译出来的app会检查线上ip,报告非法服务器地址等,协助打击私服。
2)避免书写不好的c、cpp代码崩溃整个进程,脚本代码出错了,最多影响局部逻辑,还可以上报脚本错误,方便后续解决问题,现在unity里也一样,如果c#代码书写不好,就直接闪退了,不如用lua做一个安全的调用层。
3)快速修改代码,快速跑起来,早年cpp代码编译速度比较慢,修改一行代码调试运行等半天,脚本代码方便修改,方便跑起来,不用等,放到今天也一样,同时iOS还有text size大小的限制,太多的stub function会撑大text size,而lua脚本再多的代码也不会有这个问题,不用再为了text size取舍代码怎么写,功能去留的问题。
4)反外挂,对,你没看错,反外挂,早年PE各种脱壳、反编译工具,使得一个exe几乎没有秘密,外挂作者很容易做外挂,而用脚本后,几乎所有逻辑都是中间代码,这部分中间代码可以通过修改opcode,加密,一边run,一边解密等技术,保证在进程空间内基本没有完成代码存在,对外挂作者是个很大挑战,所以网易的游戏反外挂历来做的都是最好的;
5)最后才是所谓的“热更新”, 当年也不是现在这种热更新,就是每次客户端启动的时候,有一个launcher去服务器下载一个update,然后应用这个update而已。
以上就是关于[RS] xLua从LuaJit升级Lua5.3记录全部的内容,包括:[RS] xLua从LuaJit升级Lua5.3记录、Unity中xLua与toLua对Vector3的优化、如何评价腾讯在Unity下的xLua热更方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)