Xlua热更新

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

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步操作)

被更新的方法

---恢复内容结束---

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

时间: 2024-10-11 13:54:06

Xlua热更新的相关文章

Unity3D|-XLua热更新用法的大致流程

xlua是由腾讯维护的一个开源项目,我们可以在github上下载这个开源项目并查看一些相关文档 官网:https://github.com/Tencent/xLua 配置文档:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/hotfix.md 常见问题解答:https://github.com/Tencent/xLua/blob/master/Assets/XLua/Doc/faq.md 接下来我们来走一遍使用xlua的大致

[Unity XLua]热更新XLua入门(二)-俄罗斯方块实例篇

前言 在xLua没出来之前,开源的lua框架基本都是以界面用Lua开发为主,核心战斗用C#开发,但xLua出来之后主推C#开发,Lua用作HotFix,这里我展示的第一个例子就是基于界面的经典2D小游戏--俄罗斯方块,界面逻辑是用C#写,启动加载逻辑是用lua,后面我会继续第二个同样的Demo,但是以纯Lua为主,这个案例明天更新. 效果图 由于我不会美术,所以这里使用的开源的游戏资源,感谢此作者. 游戏启动 C#启动Lua逻辑 using UnityEngine; using System.C

Unity3D热更新方案网摘总结

参考:http://blog.csdn.net/guofeng526/article/details/52662994 http://blog.csdn.net/u010019717/article/details/50853207 "热更新"这个词,在Unity3D的应用下,是有些语义错误的,但是作为大家都熟知的一项技术,我们姑且这么叫它,相信很长时间内,大家依然还会这么叫,甚至有人叫它"暖更新". 一.什么是热更新? 广义定义 无需关闭服务器,不停机状态下修复漏

客户端热更新框架之UI热更框架设计(上)

什么是热更新,为什么需要热更新?热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来说,受到苹果审核的约束, 一次审核提交需要10~20天不等的等待时间.而这段时间开发进度依然会推进很多,一旦手游上线,第一个版本在玩家疯狂行为下,出点问题是必然的,所以"在线更新" 就成了家常便饭与必然.如果你要求必须整体重新下载完整下载包体,无法热更, 那么10~20多天后,游戏估计就没啥人了. 热更新要解

热更新--lua

参考链接:https://www.cnblogs.com/imteach/p/11267312.html 介绍: Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaFramework_UGUI ToLua搭建了一个Lua语言与Unity中c#语言沟通的桥梁,借助ToLua,你可以在C#语言中调用Lua方法,也可以在Lua语言中调用C#方法. 而LuaFramework_UGUI则是基于ToLua的这种能力实现的

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5%88%86%E4%BA%ABPPT.pptx 一 .热更新(热修复)产品背景 这里谈到的热更新都是指APP(不包含网页).APP按大类别可以粗略分为 应用 和 游戏.APP的开发周期是极其快速的,在实际开发流程中,我们总会有一些需求迫使我们短时间内快速上线,比如需求流程出错,程序员主观导致的一些bu

unity 热更新思路和实现

声明:本文介绍的热更新方案是我在网上搜索到的,然后自己修改了一下,相当于是借鉴了别人的思路,加工成了自己的,在此感谢无私分享经验的朋友们. 想要使用热更新技术,需要规划设计好资源比较策略,资源版本,确保增加新资源后可以下载到本地,有资源更新的时候可以替换掉本地旧资源.我在前面写了一篇"unity 打包AssetBundle"的文章,里面生成了一个资源版本文件,不多解释了,上图.至于怎么生成这个文件的,可以看一下我前面写的文章. 废话不多说. 先介绍热更新步骤,后上代码 步骤一.在Res

JSPatch热更新的利器.

如果用一句话来描述JSPatch,就是利用系统自带的JavaScriptCore.framework配合RunTime机制,进行实时的代码下载与运行.. 而且使用也很简单,启动,加载JS,运行... [JPEngine startEngine]; NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"js"]; NSString *script = [NSStri

unity 热更新 c# 实战经验分享(二) - 动态Protobuff协议,再也不用担心为了换条协议换包了 ~~!

先提前说明一下,如果哪位小伙伴 觉得生疏的话,可以看这篇博客的前面两个博客,里面讲述了 高大上 JSB,unity 热更新方案,用强大的宇宙第一编辑器vs 来开发 unity 热观更新脚本,更新c# 不在是梦 这次的demo 工程我已经长传了,地址 在这里http://pan.baidu.com/s/1qWQlXUW:下载后(放在D盘 放在D盘 放在D盘!!!!)里面的unity 工程直接打开然后运行main 场景 .就会出现下图,这篇博客唯一 的意义就在于这个demo,实战就是实战不跟你讲废话