Unity Xlua之Hotfix热补丁 (一)

一.第一个热补丁

  • 想要打热补丁的类前需要加上[Hotfix]特性
  • 第一次打热补丁需要加上宏HOTFIX_ENABLE
  • 点击生成代码
  • 点击注入热补丁

例如我想修改如下代码中的两个方法,无论是公有方法还是私有方法都可以修改

[Hotfix]
public class HotfixMain : MonoBehaviour
{private void Start(){LuaMgr.GetInstance().Init();LuaMgr.GetInstance().LoadFile("Main");print(Add(10, 20));Speak("zzs");}public int Add(int a,int b){return 0;}public static void Speak(string str){Debug.Log("123");}
}
print("Hotfix01 开始执行!")xlua.hotfix(CS.HotfixMain,"Add",function (self,a,b)return a + b
end)xlua.hotfix(CS.HotfixMain,"Speak",function (str)CS.UnityEngine.Debug.Log(str)
end)

二.多函数替换,构造析构替换

  • 替换构造函数和析构函数与其它的函数不同,这两种构造函数是先执行C#中的构造和析构再执行Lua中的构造和析构
[Hotfix]
public class TestHotfix
{public TestHotfix(){Debug.Log("C#构造函数执行");}public void Speak(string str){Debug.Log("123");}~TestHotfix(){Debug.Log("C#析构函数调用");}
}
print("Hotfix02 开始执行!")xlua.hotfix(CS.TestHotfix,
{[".ctor"] = function()print("Lua构造函数")end,Speak = function(self,str)print(str)end,Finalize = function()print("Lua析构函数调用")end
})

三.协程替换

  • 如果修改原来函数的内容不需要重新生成代码,只有添加了函数需要重新生成代码
    private IEnumerator TestEnumerator(){while (true){yield return new WaitForSeconds(1f);Debug.Log("C#执行");}}
print("Hotfix03 开始执行!")util = require("xlua.util")xlua.hotfix(CS.HotfixMain,{TestEnumerator = function()return util.cs_generator(function()while true docoroutine.yield(CS.UnityEngine.WaitForSeconds(0.1))print("Lua执行")endend)end
})

Unity Xlua之Hotfix热补丁 (一)相关推荐

  1. Unity+XLua+阿里云热更代码

    Unity+AssetsBundel+XLua+阿里云 Unity热更新的步骤:AssetsBundle打包好资源--上传到服务器--运行项目--检测是否需要更新--1.需要更新2.不需要更新--1. ...

  2. Lua快速入门篇(XLua教程)(Yanlz+热更新+xLua+配置+热补丁+第三方库+API+二次开发+常见问题+示例参考)

                            <Lua热更新> ##<Lua热更新>发布说明: ++++"Lua热更新"开始了,立钻哥哥终于开始此部分的探 ...

  3. 热补丁HotFix使用

    感谢原作者! 项目地址:GitHub:https://github.com/dodola/HotFix 这里只介绍如何使用,以及使用中可能遇到的问题以及解决方案.下面介绍一个精简的案例. 一.制作补丁 ...

  4. Unity XLua 相关

    转自:https://www.cnblogs.com/coderJiebao/p/unity3d23.html 1. Helloworld 1 using UnityEngine;2 using XL ...

  5. 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D

    热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...

  6. iOS 利用JSPatch 添加热补丁功能

    ios 由于苹果的审核政策,一旦上线后发现bug是件让人崩溃的事情 不过可以利用oc的runtime机制可以家用JSPatch动态的为工程打热补丁 下载地址:https://github.com/ag ...

  7. Android各大热补丁方案分析和比较

    原文出处:http://blog.zhaiyifan.cn/2015/11/20/HotPatchCompare/ 最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed.AndFi ...

  8. java 热补丁_Android热补丁之AndFix原理解析

    背景 2015年下半年开源了很多Android热更新的项目,其中大部分是以QQ空间技术团队写的那篇文章为依据写出的基于multidex的热更新框架,包括Nuwa.HotFix.DroidFix等:还有 ...

  9. Xlua文件在热更新中调用方法

    Xlua文件在热更新中调用方法 public class news : MonoBehaviour { LuaEnv luaEnv;//定义Lua初始变量 void Awake() { luaEnv ...

最新文章

  1. 2.2栈的另一个应用:括号匹配
  2. 小学5年级计算机考试作文,我的小学老师五年级优秀作文(通用10篇)
  3. minio扩展现有的分布式集群:扩大集群规模,增加磁盘数量
  4. mysql插入数据与删除重复记录的几个例子(收藏)
  5. php curl和file get,PHP cURL与file_get_contents
  6. 代码大全 MSIL语言程序设计
  7. chart控件做实时曲线显示_组态王实时趋势曲线控件介绍,让你对此不再陌生
  8. python virtualenv
  9. 读取word 图片_Word中快速输入复杂公式
  10. L1-008. 求整数段和-PAT团体程序设计天梯赛GPLT
  11. python 取json下某一key_利用Python爬取全国250m精度的人口数据、房价数据和公交站(线路)等数据(一)...
  12. Vue.js 学习笔记 十 自定义按键事件
  13. mssql 存储过程 group by 集合并逗号要开某字段
  14. 搭建基于ASP.NET 2.0的DNN 4.X模块开发环境及模块实例(2)
  15. Netch + Connectify 实现代理转全局并共享给其他设备,例如Kindle
  16. Telink RDS IDE编译问题
  17. 【20保研】山东师范大学信息科学与工程学院2019年 “优秀大学生暑期夏令营”活动公告...
  18. 利用Python微信远程控制
  19. 利用LANDesk Management进行软件的打包步骤
  20. 计算机系统的四种启动方式是,详解电脑为何有四种不同的启动设备教程

热门文章

  1. 全面详细介绍一个P2P网贷领域的ERP系统的主要功能
  2. 今日解决: 忘记root密码 + 耳机没有声音 + vim编辑器
  3. 计算机新教师汇报课报道,新教师汇报课活动报道.pdf
  4. luoguP1640
  5. iOS开发之fastlane自动化打包工具安装和使用
  6. Nginx html嵌入php被注释
  7. 3DMAX游戏角色头部建模教程
  8. 综合布线的主要三大布线系统
  9. 【运维面试】面试官:你们的redis主要用来做什么?
  10. 成功解决萤石云SDK对讲功能设备端无声音手机端有声音的问题