熱補丁配置
第一步驟:類庫準備
在含有xlua的工程中,把一個Tools 的目錄拷貝到本項目中,不是放在Assets 中。
(注意tools 目錄與Assets 平級關係)
然後把插件目錄下的Tools 文件下的Mono.Cecil.dll,Mono.Cecil.Mdb.dll,Mono.Cecil.Pdb.dll 放到項目下的E:\UnityProgram\LearnHotUpdate\Assets\XLua\Src\Editor 文件目錄下
第二步驟:配置宏環境
Unity編輯器 file--> Build Setting--> Player Setting --> OtherSettings ---
-->Scripting Define Symbols[代碼定義標識] 寫入:"HOTFIX_ENABLE "
---> 然後(一定)回車確認。
第三步驟:
執行完成上面內容後,在Xlua菜單中,就會多一個“Hotfix Inject In
Editor”的選項。
第四步驟:
點擊菜單“Xlua”--> “Generate Code”
(注意:凡是增加與更新[XLua.Hotfix]標記的C#代碼,都需要執行一遍)
第五步驟:
執行菜單“xlua”-->"Hotfix inject in Editor" ,把生成的代碼,注
入的編輯器中。
測試1
在unity 新建一個按鈕,按鈕綁定InvokeInLua 。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
// 測試“HotFix 技術”
// 本質就是 lua中定義的方法,來替換出現bug的C#腳本(類)
//寫完要生成代碼 然後在菜單XLua-Hotfix inject in Editor
namespace HotUpdateModel
{
[Hotfix]
public class TestHotFix1 : MonoBehaviour {
LuaEnv luaEnv = new LuaEnv();
// Use this for initialization
void Start () {
Debug.Log("測試lua中的‘熱補丁’ 技術");
//執行一個調用函數
InvokeRepeating("InvokeInCsharp", 1F, 2F);
}
//調用函數
void InvokeInCsharp()
{
Debug.Log("在C#中執行的方法");
}
//lua語言執行的內容
public void InvokeInLua()
{
Debug.Log("準備lua調用");
luaEnv.DoString(@"xlua.hotfix(
CS.HotUpdateModel.TestHotFix1,'InvokeInCsharp',function()
print('在lua中執行的方法')
end
)");
}
}
}
測試2
在unity 新建2個按鈕,一個綁定InvokeInCsharp,一個綁定InvokeInLua
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
//寫完要在菜單XLua-Generate Code,然後在菜單XLua-Hotfix inject in Editor
namespace HotUpdateModel
{
[Hotfix]
public class TestHotFix2 : MonoBehaviour {
LuaEnv luaEnv = new LuaEnv();
// Use this for initialization
void Start()
{
Debug.Log("測試lua中的‘熱補丁’ 技術");
}
//調用函數
public void InvokeInCsharp()
{
Debug.Log("TestHotFix2 在C#中執行的方法");
}
//lua語言執行的內容
public void InvokeInLua()
{
Debug.Log("準備lua調用");
luaEnv.DoString(@"xlua.hotfix(
CS.HotUpdateModel.TestHotFix2,'InvokeInCsharp',function()
print('TestHotFix2 這是在lua中執行的方法')
end
)");
}
}
}