xLua

作者: 90qq | 来源:发表于2018-05-16 22:40 被阅读0次

1 导入xLua源文件

去github下载最新版本,解压后把Assets和Tools复制到自己项目


image.png

要是出错就导入这3个文件到XLua文件夹下(在Unity安装目录搜索就行了)


image.png

注意:各种文件最好别放在中文目录下,不然可能会出错

2 使用方式

1、添加HOTFIX_ENABLE宏打开该特性(在Unity3D的File->Build Setting->Scripting Define Symbols下添加)。编辑器、各手机平台这个宏要分别设置!如果是自动化打包,要注意在代码里头用API设置的宏是不生效的,需要在编辑器设置。


image.png

(建议平时开发业务代码不打开HOTFIX_ENABLE,只在build手机版本或者要在编译器下开发补丁时打开HOTFIX_ENABLE)

2、执行XLua/Generate Code菜单。


image.png

3、注入,构建手机包这个步骤会在构建时自动进行,编辑器下开发补丁需要手动执行"XLua/Hotfix Inject In Editor"菜单。注入成功会打印“hotfix inject finish!”或者“had injected!”。


image.png

官方例子


image.png

实例 如何使用xlua读取自己写的lua代码

using System.IO;
using UnityEngine;
using XLua;

/// <summary>
/// 配置xlua
/// </summary>
public class HotfixScripts : MonoBehaviour {

    private LuaEnv luaEnv;
    private void Awake()
    {
        luaEnv = new LuaEnv();
        luaEnv.AddLoader(MyLoader);
        luaEnv.DoString("require 'ChangeColor'");//读取lua文件
    }


    private byte[] MyLoader(ref string filePath)//地址
    {
        string absPath = @"F:\Unity\change\" + filePath + ".lua.txt";
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }

    private void OnDisable()//用来注销改过的方法
    {
        luaEnv.DoString("require 'Dispose'");
    }


    private void OnDestroy()
    {
        luaEnv.Dispose();
    }
}

要热更新的脚本

using UnityEngine;
using XLua;

[Hotfix] //要热更新的脚本要打上这个标签
public class ChangeColor : MonoBehaviour {

    public MeshRenderer go;

    [LuaCallCSharp]  //打上这个标签才能调用C#里面的代码
    public void ChangeSphereColor()//改下物体颜色,下面注释的代码和lua中的代码功能一样
    {
        //go.material.color = Color.red;
    }
}

lua脚本(lua脚本起名(xxx.lua.txt))

xlua.hotfix(CS.ChangeColor,'ChangeSphereColor',function(self)   
    self.go.material.color = CS.UnityEngine.Color.red;
end)


--[[
套路是  xlua.hotfix(类名,'方法名',function(self,参数1,参数2...) 

end)
--]]

相关文章

网友评论

      本文标题:xLua

      本文链接:https://www.haomeiwen.com/subject/mxqudftx.html