我們在加載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));
}