博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
03xlua运行程序
阅读量:6677 次
发布时间:2019-06-25

本文共 2338 字,大约阅读时间需要 7 分钟。

01:执行字符串

void Start()    {        //第一和第三行分别LuaEnv的创建以及销毁,所谓LuaEnv可以理解为lua虚拟机,往往整个工程一个虚拟机即可;        // DoString里头可以是任意合法的lua代码,例子中调用了UnityEngine.Debug.Log接口打印了一个log(C#的静态函数在CS下直接可用)        XLua.LuaEnv luaenv = new XLua.LuaEnv();        luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')"); //lua调用C#的函数(CS)        luaenv.DoString("print[[大地]]");         luaenv.Dispose();    }

在这里插入图片描述

02:加载运行lua源文件
1创建hellow.lua.txt文件
2里面输入内容

print("Hellow world by luafile")a=100b=100print(a+b)

在这里插入图片描述

3 Hellow.lua.txt放入Resources文件夹
在这里插入图片描述
4:创建脚本LoadLuaFile

private XLua.LuaEnv luaenv;    void Start()    {        //加载lua文件        TextAsset text=Resources.Load
("hellow.lua"); //helllow.lua.txt luaenv = new XLua.LuaEnv(); luaenv.DoString(text.text); luaenv.Dispose(); }

4运行控制台输出内容

在这里插入图片描述
03:通过内置的loader加载lua源文件

private XLua.LuaEnv luaenv;    void Start()    {        luaenv = new XLua.LuaEnv();        //require 实际上是调一个个的 loader 去加载,有一个成功就不再往下尝试,全失败则报//文件找不到        luaenv.DoString("require [[hellow]] ");         luaenv.Dispose();    }

04:添加自定义的Loader方法

在 xLua 加自定义 loader 是很简单的,只涉及到一个接口:
public delegate byte[] CustomLoader(ref string filepath);
public void LuaEnv. AddLoader(CustomLoader loader)
通过 AddLoader 可以注册个回调,该回调参数是字符串,lua 代码里头调用 require 时,
参数将会透传给回调,回调中就可以根据这个参数去加载指定文件,如果需要支持调试,需
要把 filepath 修改为真实路径传出。该回调返回值是一个 byte 数组,如果为空表示该 loader
找不到,否则则为 lua 文件的内容。
有了这个就简单了,用 IIPS 的 IFS?没问题。写个 loader 调用 IIPS 的接口读文件内容
即可。文件已经加密?没问题,自己写 loader 读取文件解密后返回即可

void Start()    {        LuaEnv luaEnv = new LuaEnv();        luaEnv.AddLoader(Myloader);        luaEnv.DoString("require [[hellow]] ");        luaEnv.Dispose();    }    public byte[] Myloader(ref string filepath)    {        string code = "print(666)";        return System.Text.Encoding.UTF8.GetBytes(code);    }

在这里插入图片描述

05:自定义Loader加载指定目录的Lua脚本

在StreamingAssets文件夹创建文本haha.lua.txt

文本内容是

print("ha ha ha")
void Start()    {        LuaEnv luaEnv = new LuaEnv();        luaEnv.AddLoader(Myloader);        luaEnv.DoString("require [[haha]] ");        luaEnv.Dispose();    }    public byte[] Myloader(ref string filepath)    {        string path = Application.streamingAssetsPath + "/haha.lua.txt";        string str = "";        using (StreamReader reader=new StreamReader(path))        {          str = reader.ReadToEnd();        }        return System.Text.Encoding.UTF8.GetBytes(str);    }

在这里插入图片描述

转载地址:http://anrxo.baihongyu.com/

你可能感兴趣的文章
【剑道】步法(Ashi Sabaki)
查看>>
MyEclipse 启动 tomcat时错误处理
查看>>
Scrum 冲刺博客第六篇
查看>>
【windows8开发】javascript开发Metro风格App
查看>>
Ubuntu14.04 开启MySQL的remote access
查看>>
模型方案参数更改 对比栏入选模型方案 图表效果对比 已不在项目中使用
查看>>
PowerDesigner 15 进行 数据库反转到 数据库模型
查看>>
SpringBoot 热部署
查看>>
python学习第一天
查看>>
JS 二维数组
查看>>
黑盒测试----测试用例设计方法
查看>>
Spark-RDD 模型 以及运行原理
查看>>
chrome官方完整安装包
查看>>
linux重启和关闭系统命令
查看>>
联网成功到更新本地时钟的时间差
查看>>
Android Gradle 引用本地 AAR 的几种方式
查看>>
ue4 c++学习推荐
查看>>
《团队-科学计算器-最终程序》
查看>>
李培根报告有感
查看>>
第八课: 电流电阻率和欧姆定律
查看>>