xLua中lua文件加載方式
1. 直接執行字符串方式
1 LuaEnv luaenv = new LuaEnv(); 2 luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')"); 3 luaenv.Dispose();
2. 通過require加載lua文件方式,require加載的文件路徑包括Resources和內置的一些路徑。在Resources下存放一個HelloWorld.lua.txt文件
1 LuaEnv luaenv = new LuaEnv(); 2 luaenv.DoString("require 'HelloWorld'"); 3 luaenv.Dispose();
3. 自定義loader加載
1 using System.Collections; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Net; 5 using UnityEngine; 6 using XLua; 7 8 public class MyLuaTest : MonoBehaviour 9 { 10 private LuaEnv _luaEnv = null; 11 // Start is called before the first frame update 12 void Start() 13 { 14 _luaEnv = new LuaEnv(); 15 _luaEnv.AddLoader(CustomMyLoader); 16 _luaEnv.DoString("require 'CustomDIRLuaFile'"); 17 } 18 19 private static byte[] CustomMyLoader(ref string fileName) 20 { 21 byte[] byArrayReturn = null; 22 23 // 定義lua路徑 24 string luaPath = Application.dataPath + "/Scripts/LuaScripts/" + fileName + ".lua"; 25 // 讀取lua路徑中指定lua文件內容 26 string strLuaContent = File.ReadAllText(luaPath); 27 // 數據類型轉換 28 byArrayReturn = System.Text.Encoding.UTF8.GetBytes(strLuaContent); 29 30 return byArrayReturn; 31 } 32 33 void OnDestroy() 34 { 35 _luaEnv.Dispose(); 36 } 37 }
注釋:
通過AddLoader可以注冊回調,該回調參數是字符串,lua代碼里調用require是,參數將會自動傳給回調,回調中就可以根據這個參數去加載指定文件
不同加載方式分析:
- 直接使用DoString方式加載字符串,開發調試時可以使用
- 使用require方式加載,lua文件后綴需為txt,文件必須放在Resources目錄下,否則無法加載到文件
- 自定義loader則可以把lua文件放在任意合法文件夾下,且文件后綴不用增加txt標識