XLua在游戏项目中的应用

本文介绍了使用XLua实现游戏热更新的过程。包括下载XLua、配置ExampleGenConfig.lua、生成热更新代码等步骤,并详细解释了如何通过hotfix标签和LuaCallCSharp标签来实现C#与Lua代码之间的调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目在开发游戏大厅,原来的游戏都是用unity C#开发,现在需要将这些游戏都移植到大厅。两种思路,一是游戏全部用lua重写,用tolua实现c#与lua的交互,以及热更新。思路二,在保持原有unity C#开发的游戏基础上,用XLua实现热更新。第一种方案有一套现成的比较成熟的框架,但重写成本前期相对较高;第二种方案是全新的尝试,但能够继续沿用原来的代码。考虑到开发周期因素,最后选择了XLua

关于XLua如何合入并运用到项目使用,按以下步骤:

1.下载XLua
https://github.com/Tencent/xLua

3.将Xlua目录下的ExampleGenConfig.lua放到项目editor目录下

4.在ExampleGenConfig.lua中添加[LuaCallCSharp] [CSharpCallLua] [Hotfix]需要的类型

5.热更的Lua文件命名为hotfix.lua,所有的热补丁实现都放在这里面

6.XLua中点击生成代码,点击注入热补丁(如果是手机版本不需要点击注入热补丁)

7.戏启动时去资源服加载hotfix.lua,如果有,则下载并加载到内存

游戏运行时,如果hotfix.lua中有重写方法则跑重写的lua代码,如果没有,则跑原来的C#代码

注意要多看几遍官网上的说明以及示例,这个很重要!示例代码在XLua/Example跟Turorial目录下。要去理解XLua的原理,上面的例子很多都是直接可沿用的。以下是几点个人对于XLua的理解

1.添加hotfix标签后,会生成适配代码,适配代码大概是这样的
if(lua_myFun() != null)
{
lua_myFun();
}
else
{
C#_myFun();
}
适配代码做的事情就是将标签的类添加到一个映射map中,当代码执行到这时,先判断映射中是否有重写的lua方法,如果有,就执行lua方法,否则执行现有的C#方法

2.添加LuaCallCSharp标签后,会生成同名wrap适配代码,每个类对应一个适配代码cs文件,放在XLua\Gen目录下。这样以后,lua就可以访问到C#中的类型

3.适配代码会占用空间,所以要合理清晰的规划好标签配置。对于hotfix标签,尽量用在那些较大可能改动的类型上 ;对于LuaCallCSharp标签,用在大部分业务代码上

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值