【XLua】006-自定义Loader从自定义文件夹加载Lua源文件


通过自定义loader 加载lua源文件

在xLua加自定义loader是很简单的,只涉及到一个接口:

public delegate byte[] CustomLoader(ref string filepath);
public void LuaEnv.AddLoader(CustomLoader loader)

通过AddLoader可以注册个回调,该回调参数是字符串,lua代码里头调用require时,参数将会透传给回调,回调中就可以根据这个参数去加载指定文件,如果需要支持调试,需要把filepath修改为真实路径传出。该回调返回值是一个byte数组,如果为空表示该loader找不到,否则则为lua文件的内容。
有了这个就简单了,用IIPS的IFS?没问题。写个loader调用IIPS的接口读文件内容即可。文件已经加密?没问题,自己写loader读取文件解密后返回即可。。。

注:

在执行Loader时,它会先在自定义的Loader中去读取lua文件,
没有读取到,它会尝试到自定的loader位置读取,即Resources目录下

在自定义文件夹中读取:

此处在StreamingAssets文件下读取


image.jpg
img.jpg
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XLua;
using System.IO;
public class _003_DefineLoader : MonoBehaviour {


    
    void Start () {
        LuaEnv env = new LuaEnv();
        env.AddLoader(MyLoader);
        env.DoString("require 'downloadfile'");
    }


    private byte[] MyLoader(ref string filepath)
    {
        string path = Application.streamingAssetsPath + "/" + filepath + ".lua.txt";//完整路径

        return File.ReadAllBytes(path);        
        
    }
}

输出结果:


i.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容