Unity中使用Xlua调用lua相关

cs 复制代码
//引用命名空间
using XLua;
public class L1 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //Lua解析器 让我们在Unity中使用lua
        LuaEnv env = new LuaEnv();

        //执行
        env.DoString("print('OK')");
        //执行一个Lua脚本 在resource文件夹下
        env.DoString("require('Main')");
        //垃圾回收
        env.Tick();

        //销毁Lua解析器
        env.Dispose();


    }
}

这样只能读取Resources文件夹下的脚本,但是我们做热更新需要从AB包中读取,所以需要自定义加载路径

cs 复制代码
public class L2 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        LuaEnv env = new LuaEnv();
        //XLua提供的路径重定向方法
        //自定义加载Lua文件的规则
        env.AddLoader(MyLoader);

        env.DoString("require('Main')");
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="filePath">Lua脚本文件名</param>
    /// <returns></returns>
    private byte[] MyLoader(ref string filePath)
    {
        //在这里自定义加载逻辑
        string path = Application.dataPath + "/Lua/" + filePath + ".lua";
        //得到路径后加载文件
        //引用命名空间
        if (File.Exists(path))
        {
            return File.ReadAllBytes(path);
        }
        else
        {
            print("MyLoader加载失败,文件名为"+path);
            return null;
        }
    }
}

require寻找文件的逻辑是,先找AddLoader中自定义的路径(可以有多个路径)中有没有相应文件,再去Resources下查找

相关推荐
mxwin4 小时前
unity shader中 ddx ddy是什么
unity·游戏引擎·shader
郝学胜-神的一滴6 小时前
[简化版 GAMES 101] 计算机图形学 08:三角形光栅化上
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal
nnsix7 小时前
Unity ILRuntime 笔记
unity·游戏引擎
nnsix9 小时前
Unity API 兼容的 .NET Standard 2.1 和 .NET Framework 区别
unity·游戏引擎·.net
mxwin9 小时前
Unity Shader 制作半透明物体 使用多Pass提前写入深度的方式 避免穿模
unity·游戏引擎
谙弆悕博士9 小时前
Lua学习笔记
c语言·开发语言·笔记·学习·lua·创业创新·业界资讯
nnsix10 小时前
Unity HybridCLR 笔记
笔记·unity·游戏引擎
nnsix12 小时前
Unity Addressables 笔记
unity·游戏引擎
RReality12 小时前
【Unity Shader URP】视差贴图 实战教程
ui·平面·unity·游戏引擎·图形渲染·贴图
weixin_4080996721 小时前
触动精灵调用身份证OCR识别API实现智能信息录入(Lua脚本实战)
junit·ocr·lua·自动化脚本·石榴智能·身份证ocr识别·触动精灵