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下查找

相关推荐
心前阳光17 分钟前
Unity之Luban表格配置
unity
mascon1 小时前
unity mcp 使用
unity·游戏引擎
LcGero2 小时前
Lua 的灵魂:Table 如何撑起整个游戏系统?
游戏·lua
心前阳光2 小时前
Unity之语音提问,语音答复
unity·游戏引擎
mxwin4 小时前
Unity Shader UV 坐标与纹理平铺Tiling & Offset 深度解析
unity·游戏引擎·shader·uv
chao1898444 小时前
基于STM32F1的声源定位系统设计与实现
stm32·嵌入式硬件·unity
七夜zippoe15 小时前
OpenClaw 内置工具详解
unity·ai·游戏引擎·openclaw·内置工具
mxwin20 小时前
Unity Shader 细节贴图技术在不增加显存开销的前提下,有效提升近距离纹理细节的渲染质量
unity·游戏引擎·贴图
魔士于安21 小时前
unity 低多边形 动物 带场景 有氛围感
游戏·unity·游戏引擎·贴图
小贺儿开发1 天前
Unity3D 摩斯与中文电码转换工具
科技·unity·人机交互·工具·实践·实用·科普应用