XLua热更新框架学习(二)
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
原工程地址:https://download.csdn.net/download/qq_37310110/11812518
之前记录了XLua工程的导入及简单用法,这次就记录一下Xlua的热更标签逻辑
一:环境初始化
1.在PlayerSettings里面添加宏信息
HOTFIX_ENABLE
2.执行菜单生成命令
XLua>Generate Code,会生成Wrip文件存放在Xlua/Gen目录
3.执行菜单注入命令
XLua>HotFix Inject In Editor成功后会有输出日志提示,如果有报错提示“please install the tools”,就需要把Xlua原工程里面的Tools文件夹拷贝到项目里跟Assets文件夹同级别的位置
二:基础案例
1.HotFix特性标签
在使用c#开发的时候需要后续进行“热补丁修复”的类,需要在类的头部添加一个特性标签:[HotFix],表示该类可以被Xlua热修复
2.HotFix语法
xlua.hotfix(CS.类名,‘方法名’,lua方法);这个是lua代码结构,需要使用lua虚拟机对象中的Dostring方法执行,说白了就是某个类中的某个方法用lua方法进行修复
3.案例
演示阶段我们每次修改完c#都需要执行一次“注入指令”;真实开发时lua代码肯定是和c#代码分离的.
a.修复无参普通方法
b.修复有参普通方法:有参函数修复的时候,需要传递当前脚本对象this,在lua中用self代替function(self,a,b)
--lua代码
xlua.hotfix(CS.MyHotFix,'Hello',function()
print('Lua Hello...')
end)xlua.hotfix(CS.MyHotFix,'Add',function(self,a,b)
print('Lua: a+b='..a+b)
end)
using XLua;
[Hotfix]
public class MyHotFix : MonoBehaviour
{private LuaEnv luaEnv;// Start is called before the first frame updatevoid Start(){luaEnv = new LuaEnv();}private void Update(){if (Input.GetKeyDown(KeyCode.Q)){Hello();Add(5,10);}if (Input.GetKeyDown(KeyCode.W)){luaEnv.DoString("require 'HotFix'");Debug.Log("注入修复lua...");}}private void Hello(){Debug.Log("C# hello...");}private void Add(int a,int b){Debug.Log("C#: a+b="+(a+b));}
}
三:演示案例
演示案例:原工程地址:https://download.csdn.net/download/qq_37310110/11812518
c#原始逻辑生成100个cube
[Hotfix]
public class CreateWall : MonoBehaviour
{private GameObject prefabsCube;// Start is called before the first frame updatevoid Start(){prefabsCube = Resources.Load<GameObject>("Cube");Createwall(prefabsCube);}private void Createwall(GameObject prefab){for (int i = 0; i < 10; i++){for (int j = 0; j < 10; j++){GameObject.Instantiate<GameObject>(prefab,new Vector3(i,j,0),Quaternion.identity);}}}
}
lua更新逻辑生成16个cube
local GameObject = CS.UnityEngine.GameObject
local Vector3 = CS.UnityEngine.Vector3
local Quaternion = CS.UnityEngine.Quaternionxlua.hotfix(CS.CreateWall,'Createwall',function(self,prefab)for i = 0 ,3,1 dofor j = 0,3,1 doGameObject.Instantiate(prefab,Vector3(i,j,0),Quaternion.identity);end end
end)print('Xlua HotFix Over...')
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
XLua热更新框架学习(二)相关推荐
- XLua热更新框架学习(一)
欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 Xlua源码地址:https://github.com/Tencent/xLua Xlua热更其实是补丁式的热更,跟其他的方式 ...
- lua 函数 默认值_Unity热更新框架之xLua
一:xLua概述 二:Lua文件加载 三:xLua文件配置 四:Lua与C#交互 五:xLua热更新 一:xLua概述 1.1 xLua简介 xLua是由腾讯维护的一个开源项目,xLua为Unity. ...
- 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D
热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...
- 视频教程-热更新框架设计之客户端热更框架(中部)视频课程-Unity3D
热更新框架设计之客户端热更框架(中部)视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件 ...
- PyTorch框架学习二十——模型微调(Finetune)
PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...
- PyTorch框架学习二——基本数据结构(张量)
PyTorch框架学习二--基本数据结构(张量) 一.什么是张量? 二.Tensor与Variable(PyTorch中) 1.Variable 2.Tensor 三.Tensor的创建 1.直接创建 ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- 《SpringBoot框架学习二之HTTP协议》
<SpringBoot框架学习二之HTTP协议> 文章目录 <SpringBoot框架学习二之HTTP协议> 一.HTTP介绍 (1)概述 (2)HTTP版本协议 1.HTTP ...
- XLua热更新入门教程
导航 什么是XLua XLua与其他热更新方案比优势 XLua热更新流程 教程环境 安装过程 开始写代码 补充说明 什么是XLua XLua是腾讯开源的一款Unity热更新插件 XLua与其他热更新方 ...
最新文章
- Linux搭建虚拟机,桥接模式下,主机能够Ping通虚拟机,虚拟机ping不通主机
- 使用GNS3简单模拟帧中继环境
- 给后辈的一点建议,面试必会
- elasticsearch 问题
- CRT工具远程登陆Google Cloud远程ssh登录方法
- win—命令行窗口一层一层的打开文件
- F - Firetrucks Are Red
- python嵌入java,java架构如何嵌入python?Java调用Python程序方法
- 打包时错误 Entry name ‘classes.dex‘ collided 的解决办法
- 【Python教程】十四、找不到对象?用Python自己写一个|类与对象(二)
- Jenkins中Maven构建Archiving会重命名jar
- 虚拟机Ubuntu18.04中文输入法设置(同时保留系统英文语言)
- ICEM-圆柱与长方体相切
- 汇编语言中的[...]和(...)
- oracle10G安装与配置
- 21届毫无工作经验毕业生竟然拿到了阿里的意向书?在此分享一下我的阿里3面+HR面面经
- 我的编程之路之初出茅庐(二)
- 漫画 | 程序员才是真正的“甩锅”大师!
- 使用python开发saas应用_SaaS应用对接
- mms彩信发送 java_Android编程之非调用系统界面实现发送彩信的方法(MMS)