1. 程式人生 > >Xlua熱更新

Xlua熱更新

byte oid mage image 定義 btn 目錄 sources engine

---恢復內容開始---

1.當配置好xlua環境後,依次點擊編輯欄的Xlua選項,如下:

技術分享圖片

2.在工程文件中找到Assets\Xlua\Resources,在此目錄下新建兩個txt文本,命名格式為xxx.lua.txt

技術分享圖片

3.在unity中創建編譯腳本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;

public class XluaStudy : MonoBehaviour {
        //定義一個Xlua虛擬機
private LuaEnv ev; // Use this for initialization void Start () { ev = new LuaEnv(); //添加一個資源加載器 ev.AddLoader(MyLoader); //執行對應文本文件 ev.DoString("require‘XluaMytest‘"); } //加載器 private byte[] MyLoader(ref string filePath) {
//路徑 string path = @"D:\Unity566f2\unityWorks\unitywork\FishMaster_Study\ Assets\XLua\Resources\" +filePath+".lua.txt"; return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path)); } //在不用時釋放虛擬機 private void OnDisable() { //之前的賦值置空 ev.DoString("
require‘XluaDispose‘"); //釋放 ev.Dispose(); } }

4.給第二步中的兩個文本寫入更新操作

第一個文本XluaMytest.lua.txt():

print(‘hollow123456‘)

xlua.hotfix(CS.GameManager, ‘ClickBigTimerBtn‘, function(self)

self:AddPlayerGold(1)

self. _bigTimer = self.bigTime

self:BigTimerBtnInteractable(false)

end)

第二個文本XluaDispose.lua.txt(用於置空虛擬機運行的方法):

xlua.hotfix(CS.GameManager, ‘ClickBigTimerBtn‘, nil)

5.需要註意的是,需要更新的腳本需要引用Xlua命名空間,類的前面加上標簽[Hotfix],;類中需要更新的方法加上標簽[LuaCallCSharp]

(如果原項目的腳本有改動,需要執行本文的第1步操作)

技術分享圖片

被更新的方法

技術分享圖片

---恢復內容結束---

Xlua熱更新