ToLua中有一个LuaFileUtils.cs负责去哪里寻找lua文件,然后读取里面的bytes内容。当出现一些不同的加载方式想自定义,就可以创建一个Loader然后继承LuaFileUtils,重写里面的方法。
using UnityEngine; using System.Collections; using System.IO; using LuaInterface; public class LuaLoader : LuaFileUtils { // Use this for initialization public LuaLoader(bool isZip = false) { instance = this;//外面只要new就好了,单例模式的实例为当前实例了 beZip = isZip; } public void AddBundle(string bundleName) { string url = ""; #if !UNITY_EDITOR url = LuaConst.luaResDir + "/" + bundleName.ToLower(); #else url = LuaConst.luaWinTestResDir + "/" + bundleName.ToLower(); #endif if (File.Exists(url)) { AssetBundle bundle = AssetBundle.LoadFromFile(url); if (bundle != null) { bundleName = bundleName.Replace("lua/", "").Replace(".mp", ""); base.AddSearchBundle(bundleName.ToLower(), bundle); } } } public override byte[] ReadFile(string fileName) { //怎么读取,可以自己重写 return base.ReadFile(fileName); } }
使用方法就是在你的LuaManager中,初始化new一个自定义的LuaLoder就可以了。