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就可以了。