[RS] xLua从LuaJit升级Lua5.3记录

[RS] xLua从LuaJit升级Lua5.3记录,第1张

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热更方案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9776169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存