//引用命名空間
using XLua;
public class L1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//Lua解析器 讓我們?cè)赨nity中使用lua
LuaEnv env = new LuaEnv();
//執(zhí)行
env.DoString("print('OK')");
//執(zhí)行一個(gè)Lua腳本 在resource文件夾下
env.DoString("require('Main')");
//垃圾回收
env.Tick();
//銷毀Lua解析器
env.Dispose();
}
}
這樣只能讀取Resources文件夾下的腳本,但是我們做熱更新需要從AB包中讀取,所以需要自定義加載路徑文章來源:http://www.zghlxwxcb.cn/news/detail-717949.html
public class L2 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
LuaEnv env = new LuaEnv();
//XLua提供的路徑重定向方法
//自定義加載Lua文件的規(guī)則
env.AddLoader(MyLoader);
env.DoString("require('Main')");
}
/// <summary>
///
/// </summary>
/// <param name="filePath">Lua腳本文件名</param>
/// <returns></returns>
private byte[] MyLoader(ref string filePath)
{
//在這里自定義加載邏輯
string path = Application.dataPath + "/Lua/" + filePath + ".lua";
//得到路徑后加載文件
//引用命名空間
if (File.Exists(path))
{
return File.ReadAllBytes(path);
}
else
{
print("MyLoader加載失敗,文件名為"+path);
return null;
}
}
}
require尋找文件的邏輯是,先找AddLoader中自定義的路徑(可以有多個(gè)路徑)中有沒有相應(yīng)文件,再去Resources下查找文章來源地址http://www.zghlxwxcb.cn/news/detail-717949.html
到了這里,關(guān)于Unity中使用Xlua調(diào)用lua相關(guān)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!