使用Xlua加载目录下的.lua文件

1.Scripts name :LuaController

使用Fill.ReadAllBytes来获取指定文件夹下的文件

public virtual byte[] Load(ref string fillName)

    {

        string filePath = SnakeUtils.Root + fillName;            // lua文件的实际路径

        fillName = fillName.Replace('.', '/');    // 返给lua调试器的路径,不用调试lua的就不用管这个了

        try

        {

            // File.ReadAllBytes返回值可能会带有BOM(0xEF,0xBB,0xBF),这会导致脚本加载出错(<\239>)

            byte[] script = System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(filePath));

            return script;

        }

        catch

        {

            return null;

        }

    }

Xlua解释器  LuaEnv(全局只有一个,在这里我使用了实例化一个静态实例的方式)   想要在文件中可以require到东西

需要向Xlua解释器中添加自定义loader 当我们在lua文件中require文件时就会使用我们自定义的loader

然后当我们在lua中require的时候就会在我们这个路径加载文件(这个loader可以添加多个,个人感觉一般项目只需要一个就行)

下面是LuaController的实现

static LuaEnv luaenv;

LoaderFile lf;

public LuaEnv Luaenv {

get { if (luaenv == null)

{

     luaenv = new LuaEnv();

     lf = new LoaderFile();

    luaenv.AddLoader(lf.LoadLua);

}

    return luaenv;

}

}

public static LuaController Instance

{

get { if (instance == null)

{

    GameObject g = new GameObject("LuaController");

     instance = g.AddComponent(); g.AddComponent();

  }

    return instance;

}  }

    static LuaController instance;


private void Awake()

    {

        Luaenv.DoString("require 'init'");

    }

你可能感兴趣的:(使用Xlua加载目录下的.lua文件)