我们在加载lua文件的时候,可以通过Resources.Load方式加载。
在unity里面 Resources.Load加载文件的时候,默认会给你加上后缀,此时直接加载HelloWorld时,unity会自动加上.txt
也就是说 此时的文件名是 HelloWorld.txt 所以加载到为空我们可以把lua代码 后缀依然保留txt。
//正确方式(此时就会正确加载到 HelloWorld.lua.txt文件)
TextAsset ta = Resources.Load<TextAsset>("HelloWorld.lua");
LuaEnv luaenv = new LuaEnv();
luaenv.DoString(ta.text);
luaenv.Dispose();
但是这种方式比较麻烦,我们可以采用xlua内置加载方式loader去加载文件
// require 关键字,加载并执行,此时不需要加后缀
LuaEnv luaenv = new LuaEnv();
luaenv.DoString("require 'HelloWorld'");
luaenv.Dispose();
此时文件是在Resources文件夹下面,当我们文件放在其他地方的时候,这种方式就不好用了,xlua还为我们提供了自定义load的方式
private void Start()
{
LuaEnv luaenv = new LuaEnv();
luaenv.AddLoader(MyLoader);
//系统会先执行我们自定义的loader,如果自定义loader返回的字节数组不为空,程序就不会再继续执行下去
//系统会直接执行返回的字节数组中的程序
luaenv.DoString("require'TestLua'");
luaenv.Dispose();
}
private byte[] MyLoader(ref string filePath)
{
//绝对路径
string path = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";
//相对路径
// string path = @"相对路径" + filePath + ".lua.txt";
//系统转字节数组
return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path));
}