最近在做卡牌游戏,实现一个游戏的逻辑动态更新。看了一下网上的相关资料,发现lua非常合适。
lua在游戏领域应用非常广泛,著名的《魔兽世界》就是用lua做内容更新的。
目前项目使用的引擎是unity所以去查阅了关于unity的lua资料。腾讯的xlua是目前主流的unity上的lua框架。
关于如何部署xlua我就啰嗦了,腾讯官网在github上有详细的教程和文档。
官方源码和教程GitHub链接:重要链接
开始说一下我的实现思路
1、每一个技能数据类,除去部分技能保有数据外,还有一个lua逻辑的字符串变量。
2、每个技能实例都有游戏内技能能监听的委托实例绑定[XLua.CSharpCallLua]
3、创建技能时luaenv.DoString(skill.luaText)
4、技能绑定时,委托实例 += luaenv.Global.Get<委托类型>(委托实例名)
5、在技能中的lua逻辑的字符串,就是这个技能的逻辑部分,想监听一个技能直接 "funtion 委托实例名 ... end"就可以了。