Unity Xlua之Hotfix热补丁 (一)
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热补丁 (一)相关推荐
- Unity+XLua+阿里云热更代码
Unity+AssetsBundel+XLua+阿里云 Unity热更新的步骤:AssetsBundle打包好资源--上传到服务器--运行项目--检测是否需要更新--1.需要更新2.不需要更新--1. ...
- Lua快速入门篇(XLua教程)(Yanlz+热更新+xLua+配置+热补丁+第三方库+API+二次开发+常见问题+示例参考)
<Lua热更新> ##<Lua热更新>发布说明: ++++"Lua热更新"开始了,立钻哥哥终于开始此部分的探 ...
- 热补丁HotFix使用
感谢原作者! 项目地址:GitHub:https://github.com/dodola/HotFix 这里只介绍如何使用,以及使用中可能遇到的问题以及解决方案.下面介绍一个精简的案例. 一.制作补丁 ...
- Unity XLua 相关
转自:https://www.cnblogs.com/coderJiebao/p/unity3d23.html 1. Helloworld 1 using UnityEngine;2 using XL ...
- 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D
热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...
- iOS 利用JSPatch 添加热补丁功能
ios 由于苹果的审核政策,一旦上线后发现bug是件让人崩溃的事情 不过可以利用oc的runtime机制可以家用JSPatch动态的为工程打热补丁 下载地址:https://github.com/ag ...
- Android各大热补丁方案分析和比较
原文出处:http://blog.zhaiyifan.cn/2015/11/20/HotPatchCompare/ 最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed.AndFi ...
- java 热补丁_Android热补丁之AndFix原理解析
背景 2015年下半年开源了很多Android热更新的项目,其中大部分是以QQ空间技术团队写的那篇文章为依据写出的基于multidex的热更新框架,包括Nuwa.HotFix.DroidFix等:还有 ...
- Xlua文件在热更新中调用方法
Xlua文件在热更新中调用方法 public class news : MonoBehaviour { LuaEnv luaEnv;//定义Lua初始变量 void Awake() { luaEnv ...
最新文章
- 2.2栈的另一个应用:括号匹配
- 小学5年级计算机考试作文,我的小学老师五年级优秀作文(通用10篇)
- minio扩展现有的分布式集群:扩大集群规模,增加磁盘数量
- mysql插入数据与删除重复记录的几个例子(收藏)
- php curl和file get,PHP cURL与file_get_contents
- 代码大全 MSIL语言程序设计
- chart控件做实时曲线显示_组态王实时趋势曲线控件介绍,让你对此不再陌生
- python virtualenv
- 读取word 图片_Word中快速输入复杂公式
- L1-008. 求整数段和-PAT团体程序设计天梯赛GPLT
- python 取json下某一key_利用Python爬取全国250m精度的人口数据、房价数据和公交站(线路)等数据(一)...
- Vue.js 学习笔记 十 自定义按键事件
- mssql 存储过程 group by 集合并逗号要开某字段
- 搭建基于ASP.NET 2.0的DNN 4.X模块开发环境及模块实例(2)
- Netch + Connectify 实现代理转全局并共享给其他设备,例如Kindle
- Telink RDS IDE编译问题
- 【20保研】山东师范大学信息科学与工程学院2019年 “优秀大学生暑期夏令营”活动公告...
- 利用Python微信远程控制
- 利用LANDesk Management进行软件的打包步骤
- 计算机系统的四种启动方式是,详解电脑为何有四种不同的启动设备教程