1. 程式人生 > 其它 >unity xlua 熱更新修復

unity xlua 熱更新修復

技術標籤:xlua

xLua熱補丁技術支援在執行時把一個C#實現(函式,操作符,屬性,事件,或者整個類)替換成Lua實現,意味著你可以:

  1. 平時用C#開發;
  2. 執行也是C#,效能秒殺Lua;
  3. 有bug的地方下發個Lua指令碼fix了,下次整體更新時可以把Lua的實現換回正確的C#實現,更新時甚至可以做到不重啟遊戲; 這個新特性iOS,Android,Window,Mac都測試通過了,目前在做一些易用性優化

本文主要配置流程

第一步、下載 xluahttps://github.com/Tencent/xLua

第二步、將下載的xlua中tool、xlua、Plugins拷貝到自己的專案。

第三步、如下圖依次執行,切記操作不能過快,每操作完一步要等unity右下角轉圈圈完成,再進行下一步。

第四步、配置build setting 巨集,如下圖

第五步、編寫 XluaManger主要是lua虛擬機器的建立、執行和銷燬

public class XLuaManager : MonoBehaviour
{
    private LuaEnv luaEnv;
    void Awake()
    {
        luaEnv = new LuaEnv();
        luaEnv.AddLoader(LuaLoader);
       // LuaDoString("DemoFixed.lua");
    }
    public void LuaDoString(string chunk) 
    {
        luaEnv.DoString(string.Format("require '{0}'", chunk));
    }

    byte[] LuaLoader(ref string filePath)
    {
        string absPath = Application.streamingAssetsPath + "/" + filePath + ".txt";
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }

    // Update is called once per frame
    void Update()
    {
        if (luaEnv != null)
            luaEnv.Tick();
    }

    private void OnDestroy()
    {
        if (luaEnv != null)
        {
            luaEnv.GC();
            luaEnv.Dispose();
        }
    }
}

第六步、配置可更新的類

第七步、編寫lua程式碼除錯