最近在做卡牌遊戲,實現一個遊戲的邏輯動態更新。看了一下網上的相關資料,發現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"就可以了。