XLua在游戏项目中的应用

最近项目在开发游戏大厅,原来的游戏都是用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标签,用在大部分业务代码上

你可能感兴趣的:(lua,XLua,Unity,C#)