XLua 熱補丁學習

熱補丁配置
第一步驟:類庫準備
在含有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
			   )");
		}

	}
}

 

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