xLua自定义加载器
xLua入门基础
环境配置
xLua是腾讯开发,据说比较先进;
下载下来后将Plugins和XLua文件夹考进项目;

Plugins多平台权限;XLua和C#交互;
test.lua文件中只写了一句print(Hello LittlePerilla);
运行Lua代码
运行xLua代码需要创建lua解释器,结束要释放解释器;
DoString是将字符串当成lua代码执行;
//lua解释器
LuaEnv luaenv = new XLua.LuaEnv();
//运行lua代码,字符串当lua代码执行;
luaenv.DoString("print('hello world!')");
//释放解释器
luaenv.Dispose();
运行C#代码
CS.为xLua中调用C#代码的关键字;
LuaEnv luaenv = new XLua.LuaEnv();
//运行lua代码,字符串当lua代码执行;
luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
luaenv.Dispose();
返回值
LuaEnv luaenv = new XLua.LuaEnv();
object[] data = luaenv.DoString("return 100, false");
Debug.Log($"{data[0]}__{data[1]}");
luaenv.Dispose();
自定义加载器
默认加载器路径为:steamingAssets;
LuaEnv luaenv = new LuaEnv();
//加载test.lua,这里的require是从默认加载器:steamingAssets中加载
luaenv.DoString("require('test')");
luaenv.Dispose();
自定义加载路径:
所有的lua脚本都放在Assets同级目录:DataPath\Lua;

xLua解释器中AddLoader方法;参数是一个委托;
public delegate byte[] CustomLoader(ref string filepath);
filepath这个path就是require(path)的参数;
通过委托返回.lua文件中所有的代码字节数据,提供给解释器调用;
public void MyLoader()
{
LuaEnv luaenv = new LuaEnv();
//自定义加载器,加入xlua的解析路径
//public delegate byte[] CustomLoader(ref string filepath);
luaenv.AddLoader(ProjectLoader);
luaenv.DoString("require('test')");
luaenv.Dispose();
}
//自定义加载器先于系统加载器;
//未加载到文件,返回空;
public byte[] ProjectLoader(ref string filepath)
{
string path = Application.dataPath;
path = path.Substring(0, path.Length - 6) + "DataPath/Lua/" + filepath + ".lua";
//读取文件为字节数组
if(File.Exists(path))
return File.ReadAllBytes(path);
else
{
Debug.Log("未找到路径文件");
return null;
}
}
xLua自定义加载器的更多相关文章
- Java类加载机制及自定义加载器
转载:https://www.cnblogs.com/gdpuzxs/p/7044963.html Java类加载机制及自定义加载器 一:ClassLoader类加载器,主要的作用是将class文件加 ...
- Java 理解类加载过程 -- 自定义加载器
类加载器可以看下我的收藏: https://www.cnblogs.com/dongguacai/p/5879931.html 现在准备一个字节码文件: 自定义加载器: package com.xzl ...
- KnockoutJS 3.X API 第六章 组件(5) 高级应用组件加载器
无论何时使用组件绑定或自定义元素注入组件,Knockout都将使用一个或多个组件装载器获取该组件的模板和视图模型. 组件加载器的任务是异步提供任何给定组件名称的模板/视图模型对. 本节目录 默认组件加 ...
- JVM类加载(4)—加载器
定义: 虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代码模块称之为“类加载器 ...
- <JVM中篇:字节码与类的加载篇>04-再谈类的加载器
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- xlua的自定义加载
具体可以先看xlua的自定义加载的demo,那个用lamda表达式做的 我这个更好理解 主要是ReadFile2的结构问题,必须的写成这样
- Flex 4 自定义预加载器
本示例的目的是在Flash Professional里创建自定义预加载器SWC,并扩展SparkDownloadProgressBar类在Flex 4应用程序中使用. 预加载器显示加载进度百分比 ...
- 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)
[SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...
- AMD加载器实现笔记(四)
继续这一系列的内容,到目前为止除了AMD规范中config的map.config参数外,我们已经全部支持其他属性了.这一篇文章中,我们来为增加对map的支持.同样问题,想要增加map的支持首先要知道m ...
随机推荐
- ES读写数据的工作原理
es写入数据的工作原理是什么啊?es查询数据的工作原理是什么?底层的lucence介绍一下呗?倒排索引了解吗? 一.es写数据过程 1.客户端选择一个node发送请求过去,这个node就是coordi ...
- 【JavasScript】折腾一个基础到不能再基础的顺滑抽奖页面
前言 事情是这样的,作为一个意志力极低的人,最近一直在找寻提高意志力的方法. 然后决定试一试所谓的"建立奖励机制",也就是说,完成一项意志力挑战后给自己一些奖励(具体操作方法不在这 ...
- The Second Week lucklyzpp
The Second Week 文件通配符模式 在Linux系统中预定义的字符类 1.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录 2.复制/etc目录下 ...
- python操作图片
时间:2018-11-30 记录:byzqy 标题:python实现图片操作 地址:https://blog.csdn.net/baidu_34045013/article/details/79187 ...
- php常用的函数
addslashes: 字符串加入斜线.bin2hex: 二进位转成十六进位.chop: 去除连续空白.chr: 返回序数值的字符.chunk_split: 将字符串分成小段.convert_cyr_ ...
- python 实用技巧:几十行代码将照片转换成素描图、随后打包成可执行文件(源码分享)
效果展示 原始效果图 素描效果图 相关依赖包 # 超美观的打印库 from pprint import pprint # 图像处理库 from PIL import Image # 科学计算库 imp ...
- Python之pyyaml模块
pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump().yaml.safe_load()函数将python值和yaml格式数据相互转换.当然也存在yaml. ...
- javaScript知识储备
javaScript知识储备 组成 ECMAScript(核心) 提供语法.变量等,遵循ECMA-262标准 DOM(文档对象模型) 提供操作HTML标签的API,遵循W3C规范 BOM(浏览器对象模 ...
- Mybatis-Plus - 条件构造器 QueryWrapper 的使用
目录 前言 查询示例 基础代码 QueryWrapper 的基本使用 QueryWrapper 的lambada写法 LambadaQueryWrapper 的使用 LambdaQueryChainW ...
- 板子题 Sol
RT Cyber_Tree 出了一道板子题... 这题乍看之下貌似还不戳,但如果您做过类似的题,那么这就是一道板子题.... 首先明确要求的是什么,如果我们只考虑权值最大而不考虑最小距离,那么要求的显 ...