一个新的Unity3d下面的lua方案

博主分享了在Unity3D中使用tolua进行脚本开发的经验,对比了ilruntime、injectfx和xlua等方案。选择了tolua是因为其广泛的基础和良好的性能。然而,大型项目中遇到的问题包括wrap代码量大、内存占用及初始化时间。为解决这些问题,博主进行了改造,如按需注册函数、减少wrap代码生成、优化C#对象存储结构和参数传递接口。目前项目还在进行中,邀请有兴趣的同学参与讨论。
摘要由CSDN通过智能技术生成

详见github: https://github.com/bianpeng001/bLua

Unity3D下面的脚本方案, 更新热更新方案, 也算是百家争鸣. 我之前用的是tolua的方案, 比较了其他几个

1. ilruntime,injectfx, 为代表的直接解释执行ilcode的方案, 这个思路不错的, 但是性能总归是个问题. 

2. xlua: 用csharp开发, 拿lua来做补丁.

3. tolua: 尽量用lua做开发

最后选了tolua这个方向. 主要理由还是lua语言群众基础好, 性能好, 以及, 反正用了, 不如多用用. 业务代码都用lua来实现, 开发期间也方便了. 然后平时也用lua, 则对lua的熟练度会高很多.

实际用下来, tolua还是很方便的, 代码结构也比较清晰, 但由于我们使用的比较重度. 也发现了一些问题.

1. wrap注册量很大, 占用的内存和初始化时间, 不可小觑. 15k个函数, 常量和枚举也很多.

2. wrap代码量非常大, 20w行, 转换成il2cpp之后, 只会更多. 

3. 顺便更新下lua版本, 享受下新版本的特性, 比如int64, 分代GC等..

 

为了解决这几个问题, 做了一些修改, 有一些方案不太好合并到原来的代码里面去了, 还不如重新写一个了. 刚开始写, 还在解决一些功能和crash

 

还有一些其他的改进, 

  1. 函数和属性运行时按需注册使用 (详情)
  2. 减少wrap代码的生成代码量, 复用相同函数声明类型的wrap代码 (详情)
  3. <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值