首页 > 其他分享 >Xlua解析器管理器

Xlua解析器管理器

时间:2024-09-01 17:25:15浏览次数:13  
标签:解析器 管理器 string Lua Xlua lua luaEnv return public

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;

/// <summary>
/// Lua管理器
/// </summary>
public class LuaMgr : BaseManager<LuaMgr>
{
    private LuaEnv luaEnv;

    public void Init()
    {
        //唯一的解析器
        luaEnv = new LuaEnv();
        //添加重定向委托函数
        luaEnv.AddLoader(MyCustomLoader);
        luaEnv.AddLoader(MyCustomLoaderFormAB);
    }

    //Lua总表
    //用于之后 lua访问C#时 使用 通过总 表获取lua中各种内容
    public LuaTable Global
    {
        get
        {
            return luaEnv.Global;
        }
    }

    private byte[] MyCustomLoader(ref string filepath)
    {
        //测试传入的参数是什么
        //Debug.Log(filepath);
        //决定Lua文件所在路径
        string path = Application.dataPath + "/Lua/" + filepath + ".lua";
        //C#自带的文件读取类
        if (File.Exists(path))
        {
            return File.ReadAllBytes(path);
        }
        else
            Debug.Log("MyCustomLoader重定向失败");

        return null;
    }

    //再写一个Load 用于从AB包加载Lua文件
    private byte[] MyCustomLoaderFormAB(ref string filepath)
    {
        //改为我们的AB包管理器加载
        TextAsset file2 = ABMgr.GetInstance().LoadRes<TextAsset>("lua", filepath + ".lua");
        if (file2 != null)
            return file2.bytes;
        else
            Debug.Log("MyCustomLoaderFormAB重定向失败");
        return null;
    }

    /// <summary>
    /// 执行lua文件
    /// </summary>
    /// <param name="fileName"></param>
    /// <param name="formWhere"></param>
    public void DoLuaFile(string fileName, string formWhere = null)
    {
        string str = string.Format("require('{0}')", fileName);
        luaEnv.DoString(str);
    }

    //执行Lua脚本
    public void DoString(string luaScript, string fromWhere = null)
    {
        luaEnv.DoString(luaScript, fromWhere);
    }

    //释放垃圾
    public void Tick()
    {
        luaEnv.Tick();
    }

    //销毁
    public void Dispose()
    {
        luaEnv.Tick();
        luaEnv.Dispose();
    }
}

标签:解析器,管理器,string,Lua,Xlua,lua,luaEnv,return,public
From: https://blog.csdn.net/lqd201314/article/details/141781208

相关文章

  • spring 自定义属性解析器
    自定义属性解析器org.springframework.context.support.AbstractApplicationContext#prepareBeanFactorybeanFactory.setBeanClassLoader(getClassLoader());//设置EL表达式解析器(${})beanFactory.setBeanExpressionResolver(newStandardBeanExpressionResolver(beanFactory.g......
  • 中断下半部与调度管理器
    中断的下半部在Linux系统中的执行确实受到调度管理器(或称为内核调度器)的间接管理,但并非直接由调度管理器像管理普通进程那样进行调度。这是因为中断处理(包括上半部和下半部)有其特殊的执行环境和上下文。###中断下半部的执行机制1.**异步执行**:中断下半部的执行是异步的,即它不......
  • SAP B1 基础实操 - 查询管理器(基础版)
    一、功能介绍很多时候我们需要将不同表单的信息汇总在一张表格内方便查看,在SAPB1中,我们通过【查询管理器】写SQL代码的方式查询数据并汇总。如上图,在表单中,上半黄底为SQL代码区域,下半灰底表格为根据SQL代码查询得到的结果。本篇以一个简单案例讲述查询管理器的基本......
  • MySQL 源码|62 - 词法解析(V2):调用词法解析器的逻辑
    目录文档:MySQL源码|源码剖析文档目录源码位置(版本=MySQL8.0.37):sql/sql_class.cc;sql/sql_yacc.yy前置文档:MySQL源码|33-语法解析:bison基础语法规则MySQL源码|61-词法解析(V2):MySQL语法解析指定的返回值类型的联合体在sql/sql_yacc.yy中定义了%defineapi.pr......
  • 源代码管理器tfs转git并保留历史提交记录
    1、到GitHubhttps://github.com/git-tfs/git-tfs/releases下载最新版本的GitTfs工具 2、下载的压缩包解压,并将压缩包路径添加到系统的环境变量   3、执行git-tfs-help有输出就可以了,程序就可以使用了 4、新建一个目录,用户拉取tfs代码并生成tfs提交记录语法......
  • WinRAR压缩包管理器安装包下载地址,电脑必备软件!
    安装步骤WinRAR是一款功能强大的压缩包管理器,可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类型文件,新建RAR及ZIP格式等的压缩类文件。软件:WinRAR压缩软件语言:简体中文大小:3.8M安装环境:Windows7及以上, 32/64位操作系统硬件......
  • Python文件管理器:一个基于wxPython的桌面应用
    在当今的软件开发世界中,管理大量的源代码文件变得越来越重要。无论是个人项目还是大型团队协作,有一个强大而灵活的文件管理工具都可以大大提高工作效率。今天,我们要介绍一个基于Python和wxPython构建的文件管理器,它专门用于管理.py文件。C:\pythoncode\new\managefiles.py......
  • dokuwiki创建超过22个用户时用户管理器502报错的解决方法
    Dokuwiki超过22个用户时用户管理器502报错解决当DokuWiki启用了[ldaplocalauth]方式认证,并且创建的用户超过22个时,再次打开用户管理器浏览器会收到Nginx返回的502BadGateway报错。这个问题通常是由于Nginx的fastcgi缓存或头部缓冲区大小不足以处理从后端服务器(如PHP-FPM)接收......
  • 【Python实现禁用任务管理器】
    效果展示:代码及解析:提示:使用pyinstaller打包可以避免弹窗,食用更佳哦提示(2):运行后要等待一段时间再关机哦禁用代码:要禁止任务管理器关闭Python程序,可以通过修改注册表来实现。以下是示例代码:importwinregimportctypesimportsys#以管理员身份运行此程序ct......
  • 【通过禁用任务管理器实现进程保活】(bat)
    效果展示上代码,球球给我点个关注吧该程序的操作实际是开启后挂在后台循环100万次kill掉taskmgr.exe的命令的bat脚本@echooffif"%1"=="hide"gotoCmdBeginstartmshtavbscript:createobject("wscript.shell").run("""%~0""hide",0)(window.clo......