欢迎加入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热更新框架学习(二)相关推荐

  1. XLua热更新框架学习(一)

    欢迎加入Unity业内qq交流群:956187480 qq扫描二维码加群 Xlua源码地址:https://github.com/Tencent/xLua Xlua热更其实是补丁式的热更,跟其他的方式 ...

  2. lua 函数 默认值_Unity热更新框架之xLua

    一:xLua概述 二:Lua文件加载 三:xLua文件配置 四:Lua与C#交互 五:xLua热更新 一:xLua概述 1.1 xLua简介 xLua是由腾讯维护的一个开源项目,xLua为Unity. ...

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

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

  4. 视频教程-热更新框架设计之客户端热更框架(中部)视频课程-Unity3D

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

  5. PyTorch框架学习二十——模型微调(Finetune)

    PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...

  6. PyTorch框架学习二——基本数据结构(张量)

    PyTorch框架学习二--基本数据结构(张量) 一.什么是张量? 二.Tensor与Variable(PyTorch中) 1.Variable 2.Tensor 三.Tensor的创建 1.直接创建 ...

  7. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  8. 《SpringBoot框架学习二之HTTP协议》

    <SpringBoot框架学习二之HTTP协议> 文章目录 <SpringBoot框架学习二之HTTP协议> 一.HTTP介绍 (1)概述 (2)HTTP版本协议 1.HTTP ...

  9. XLua热更新入门教程

    导航 什么是XLua XLua与其他热更新方案比优势 XLua热更新流程 教程环境 安装过程 开始写代码 补充说明 什么是XLua XLua是腾讯开源的一款Unity热更新插件 XLua与其他热更新方 ...

最新文章

  1. Linux搭建虚拟机,桥接模式下,主机能够Ping通虚拟机,虚拟机ping不通主机
  2. 使用GNS3简单模拟帧中继环境
  3. 给后辈的一点建议,面试必会
  4. elasticsearch 问题
  5. CRT工具远程登陆Google Cloud远程ssh登录方法
  6. win—命令行窗口一层一层的打开文件
  7. F - Firetrucks Are Red
  8. python嵌入java,java架构如何嵌入python?Java调用Python程序方法
  9. 打包时错误 Entry name ‘classes.dex‘ collided 的解决办法
  10. 【Python教程】十四、找不到对象?用Python自己写一个|类与对象(二)
  11. Jenkins中Maven构建Archiving会重命名jar
  12. 虚拟机Ubuntu18.04中文输入法设置(同时保留系统英文语言)
  13. ICEM-圆柱与长方体相切
  14. 汇编语言中的[...]和(...)
  15. oracle10G安装与配置
  16. 21届毫无工作经验毕业生竟然拿到了阿里的意向书?在此分享一下我的阿里3面+HR面面经
  17. 我的编程之路之初出茅庐(二)
  18. 漫画 | 程序员才是真正的“甩锅”大师!
  19. 使用python开发saas应用_SaaS应用对接
  20. mms彩信发送 java_Android编程之非调用系统界面实现发送彩信的方法(MMS)

热门文章

  1. 算法手撕代码51~55
  2. tensorflow卷积神经网络实战:Fashion Mnist 图像分类与人马分类
  3. UE4/5Control Rig绑定(向前解析)
  4. 如何将PDF转换为PPT?2个免费好用的pdf转ppt工具
  5. 单片机:各类模块数据手册及其资源
  6. functools 可调用对象上的高阶函数和操作
  7. 成都Java开发工程师工资有多高
  8. ACdreM-1061 郭式树 没文化真可怕
  9. 微信小程序--自定义组件之搜索框
  10. random seed什么意思