Xlua学习记录
下载Xlua
在github上下载xlua之后,将 xlua-master/Assets下的内容拷贝到我们的工程里,如图所示:
执行字符串:
执行时直接使用luaEnv.DoString方法来执行lua的操作
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class XluaTest : MonoBehaviour {
LuaEnv luaEnv;
void Start () {
luaEnv = new LuaEnv();
luaEnv.DoString("print('运行xlua')");
luaEnv.Dispose();
}
}
运行后显示以下内容:
执行加载Lua文件
在Resources文件夹下创建一个文本文档命名为luaTest,后缀名以.lua.txt结束。打开文档编写简单lua代码:
回到代码中,直接使用下面的方式加载Resources文件下的lua文档,luaEnv.Dostring方法会直接进行编译:
TextAsset t = Resources.Load<TextAsset>("luaTest.lua")
luaEnc.DoString(t.text)
运行后如下图所示:
或者不使用上面的这个方式可以直接使用lua里的方法来加载lua文件:
luaEnv.DoString("require 'luaTest'");
自定义loder
官方文档介绍loder的用法,下面演示一下自定义loder,方便之处在于可以自定义执行lua时想要的一些操作:
新建一个文件夹StreamingAssets,再新建一个lua文件lua007.lua.txt编辑内容为print(“I am 007”)
在脚本中更改以下代码:
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using XLua;
public class CreatLoder : MonoBehaviour {
void Start ()
{
LuaEnv luaEnv = new LuaEnv();
luaEnv.AddLoader(Myloder);
luaEnv.DoString("require'test007'");
luaEnv.Dispose();
}
public byte[]Myloder(ref string feilPath)
{
string absPayh = Application.streamingAssetsPath + "/" + feilPath+".lua.txt";
return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPayh));
}
}
运行后:
通过C#访问lua中的全局变量
在新场景中新建一个Resources文件夹,新建一个lua文件,编辑为:
a=100
name=”Andy”
IsRoot=false
打开脚本进行编辑
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
public class CSharpCalllua : MonoBehaviour {
void Start () {
LuaEnv luaEnv = new LuaEnv();
luaEnv.DoString("require'CSharpCalllua'");//先打开lua文件,再获取lua中的全局变量
int a = luaEnv.Global.Get<int>("a");s
string name = luaEnv.Global.Get<string>("name");
bool isroot = luaEnv.Global.Get<bool>("IsRoot");
Debug.Log(a);
Debug.Log(name);
Debug.Log(isroot);
}
void Update () {
}
}
点击运行后显示:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!