歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣
Xlua源碼地址:https://github.com/Tencent/xLua
Xlua熱更其實是補丁式的熱更,跟其他的方式不一樣的是初始版本都是用的c#開發,只要在後期需要更新的地方打上補丁標籤,而補丁邏輯就用lua替換掉原有的邏輯。xlua降低了初始版本的開發成本。此框架只有更新邏輯,下載更新功能需要另外處理
一:下載Xlua
Xlua源碼分爲完整版跟開發版兩種,完整版裏面包含很多演示案例工具等,我們用於開發的直接下載開發版即可
二.導入Xlua
1.創建新的unity項目,創建好資源管理文件夾
2.將XLua中的Plugins和XLua文件夾拷貝到項目中
三.C#調用Lua
a.調用內部lua代碼
1.引入XLua命名空間,在XLua中運行Lua代碼的虛擬機就是LuaEnv
2.一個LuaEnv實例就是一個Lua虛擬機,建議全局唯一
LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString("print('My Name Is HSJ')");
b.調用外部Lua文件
1.在Resources文件夾下創建一個Lua文件,文件的後綴需要是txt,格式:fileName.lua.txt
2.在c#的代碼中通過lua虛擬機調用DoString()方法加載執行該lua文件;luaEnv.DoString("require 'fileName'");
不需要寫lua文件的準確路徑,只要把lua文件放到resources路徑下即可。(此處存疑)
luaEnv.DoString("require 'Hsj'");
c.c#獲取Lua代碼中的數據
lua代碼:
a = 100
b = '幻世界'
c = true
function MyName()
print('My Name Is Hsj')
end
c#代碼
LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString("print('My Name Is HSJ')");
luaEnv.DoString("require 'Hsj'");
int a = luaEnv.Global.Get<int>("a");
string b = luaEnv.Global.Get<string>("b");
bool c = luaEnv.Global.Get<bool>("c");
LuaFunction MyName = luaEnv.Global.Get<LuaFunction>("MyName");
Debug.Log(a);
Debug.Log(b);
Debug.Log(c);
MyName.Call();
四:lua調用c#
1.Lua調用c#需要在c#的命名空間之前加前綴:“CS.”
2.CS.UnityEngine.GameObject 獲取c#中的類
CS.UnityEngine.Debug.Log 獲取c#中的方法
CS.UnityEngine.GameObject.Find 獲取c#中的方法
3.演示
lua代碼:
local GameObject = CS.UnityEngine.GameObject
local Debug = CS.UnityEngine.Debug
local go = GameObject('Hsj_LUa')
Debug.Log(go.name)
local myCamera = GameObject.Find('Main Camera')
Debug.Log(myCamera.name)
原工程地址:https://download.csdn.net/download/qq_37310110/11812518
本人是根據擅碼網的monkey老師的教學視頻學習的:http://www.mkcode.net/
歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣