【从零开始游戏开发】xlua 和 tolua 特性区别 | 全面总结 |建议收藏
【从零开始游戏开发】xlua 和 tolua 特性区别 | 全面总结 |建议收藏
你知道的越多,你不知道的越多 🇨🇳🇨🇳🇨🇳
点赞再看,养成习惯,别忘了一键三连哦 👍👍👍
文章持续更新中 📝📝📝
1️⃣前言🔥🔥🔥
Lua热更新主要由三部分组成:
1、C# 与 Lua 的互相调用机制;
2、Lua 文件的打包;
3、网络传输,校验。
当前Unity在手游平台主要的热更新方式Lua、ILRuntime。其中Lua热门的方案就是Tolua、Xlua及Slua。
XLua , ToLua , ULua都只是提供了 C# 与 Lua 的互相调用机制,差别基本就是少量的语法差别。
1️⃣每次修改c# 代码 xlua 无需生成代码, tolua 需要生成代码?🔥🔥🔥
🔑原理
tolua:c# 代码静态注册到lua代码中
xlua:在编辑器模式下使用TypeBuilder,IlEmit,动态生成接口的C#代码,避免了每次新注册或者改变导入类时,都需要生成代码并加载。最后在实际发布中需要生成代码
🔑注意点
但是需要加XLua.LuaCallCSharp or XLua.ReflectionUse(如果发布的时候没有生成代码的话)
建议所有要在Lua访问的类型,要么加LuaCallCSharp,要么加上ReflectionUse,这才能够保证在各平台都能正常运行。
🔑结论
在实际项目中,确实经常由于未运行代码生成菜单,导致一些编译或运行错误。如果项目逻辑主要使用lua开发,并不设计到频繁的互操作的话,此问题有所缓解
2️⃣xLua支持热补丁?🔥🔥🔥
1、开发只用C#;
2、运行也是C#,性能可以秒杀lua;
3、出问题了才用Lua来改掉C#出问题的部位,下次整体更新时换回正确的C#;能做到用户不重启程序fix bug;
🔑原理热补丁的基本原理其实非常简单,了解后任何程序员都很容易分析出开销,比如对于这个类
[hotfix]
public class Calc
{
int Add(int a, int b)
{
return a + b
}
}
打了hotfix标签后,xLua会在il层面注入代码(触发编译后),注入之后这个类会类似这样:
public class Calc
{
static Func<object, int, int, int> hotfix_Add = null;
int Add(int a, int b)
{
if (hotfix_Add != null) return hotfix_Add(this, a, b);
return a + b
}
}
如果lua中执行了hotfix调用,hotfix_Add会指向一个lua的适配函数。
xlua.hotfix(CS.Calc, 'Add', function(a, b)
print('Update in lua')
end)
3️⃣复杂类型传递无GC?🔥🔥🔥
isssue
struce/class 映射只支持int类型
请问 hotfix 子类中重载父类的方法
父类中有个 :
public virtual void Awake()
{
Debug.Log("name" + gameObject.name);
}
子类中重载:
public override void Awake()
{
base.Awake();
Debug.Log("testpanel awake===");
}
我在hotfix 这个子类的Awake时:
xlua.hotfix(CS.TestPanel, 'Awake', function()
print('<<<<<<<<Awake in lua')
end)
这里,有什么办法还可以执行到父类的Awake。
目前没提供。。hotfix的话,你把父类逻辑也在lua实现就可以了。
就是在hotfix的时候把父类的这个方法里面的逻辑也写到Lua里面?以后会有提供么?
想了下,貌似很难用很常规的办法提供。
4️⃣是否有丰富的库?🔥🔥🔥
tolua 因为早期的沉淀如Luaframework这种框架 所以开发起来可以直接用而不用自己再从头弄一些轮子, 相比之下xlua精简了不少, 需要自己花费一定的时间造轮子
🎁🌻🌼🌸 粉丝福利来喽 🎁🌻🌼🌸
- 免费领取海量资源 🎁
简历自测评分表、Unity职级技能表、面试题库、入行学习路径等- 《Unity游戏开发五天集训营 》50个名额 🎁
我给大家争取到了 50个《游戏开发五天集训营 》名额,原价198,前50个免费扫码加入,暗号小听歌
即可参加ARPG狼人战斗系统、饥荒生存类游戏开发、回合制RPG口袋妖怪游戏等游戏开发训练营- 额外抽奖机会🎁
参加游戏训练营、还有机会获得大厂老师在线面试指导、或者有机会获得价值1998元的《Unity极速入门与实战》课程
更多推荐
所有评论(0)