码迷,mamicode.com
首页 > 其他好文 > 详细

Xlua热更新

时间:2018-12-13 19:30:49      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:file   new   引用   disable   热更新   工程文件   start   bytes   虚拟   

---恢复内容开始---

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热更新

标签:file   new   引用   disable   热更新   工程文件   start   bytes   虚拟   

原文地址:https://www.cnblogs.com/RainPaint/p/10115320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!