XLua热更新框架学习(二)

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(二)_第1张图片


原工程地址: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 update
    void 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));
    }
}

 XLua热更新框架学习(二)_第2张图片

本人是根据擅码网的monkey老师的教学视频学习的:http://www.mkcode.net/​​​​​​​


欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

XLua热更新框架学习(二)_第3张图片

你可能感兴趣的:(Unity移动端相关技术,工具类,Lua)