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

相关推荐
zhchyun200814 小时前
【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(05)
ui·unity·游戏引擎
_ZHOURUI_H_17 小时前
不做完整 ECS,只优化数据布局:Unity EasyECS 到底是什么
unity·性能优化·游戏引擎
肠畔码农2 天前
底层视角拆解:Redis Lua脚本原子性、主线程阻塞与主从不一致全解析
java·redis·lua
郝学胜-神的一滴2 天前
Horse3D 游戏引擎研发笔记(七):Clydesdale——从流式日志到多输出订阅
c++·qt·unity·游戏引擎·图形渲染·unreal engine·opengl
小贺儿开发3 天前
Unity 程序员编曲花絮:汪峰《河流》细节修复
科技·学习·unity·程序员·音乐·demo·写代码
598866753@qq.com3 天前
Unity UniText笔记
unity·unitext
小的~~3 天前
面试被问懵了?为什么 Redis 单线程还能保证 Lua 脚本原子性,却偏偏选了 Lua?
redis·面试·lua
鼎艺创新科技3 天前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
huihui3613 天前
校友网管理软件技术选型框架:基于功能核验与系统架构的量化评估
unity·系统架构·游戏引擎
五仁烧饼3 天前
Unity性能优化系列设置篇 - URP 移动端设置基线与分档策略
unity·游戏引擎