XLua熱更新框架學習(一)

歡迎加入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掃描二維碼加羣

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章