Xlua熱更新
阿新 • • 發佈:2018-12-13
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熱更新