UH2S2L3——Lua文件加载重定向
UH2S2L3——Lua文件加载重定向
本章代码关键字
1 | luaEnv.AddLoader() //添加加载Lua文件函数的方法,要求函数参数接收传入到require语句的字符串,返回脚本文件的byte数组 |
文件加载重定向
xlua提供了一个路径重定向的方法luaEnv.AddLoader()
,允许我们自定义加载Lua文件的规则
当我们执行Lua语言require
时,相当于执行一个lua脚本,它就会自动执行我们自定义传入的这个函数
首先需要观察该方法的实现
LuaEnv.cs
1 | //... |
可见,LuaEnv.cs声明了委托CustomLoader
,要求函数的参数列表为ref string filepath
,返回值为byte[]
而我们添加的自定义加载Lua文件的方法,会加入到CustomLoader
的列表内,
因此我们的方法需要按照委托CustomLoader
要求的那样声明,再执行AddLoader()
并传入方法
1 | void Start() |
如果自定义加载函数返回了null
,就会执行下一个自定义加载函数,如果都没有找到,就会使用默认路径查找
之后我们再执行env.DoString("require('Lua脚本名')")
,就会自动执行这里的MyCustomLoader()
通过函数中的逻辑,去加载Lua文件,传入的参数是require
执行的lua脚本文件名,通过它即可拼接一个Lua文件所在路径
接下来实现加载方法,首先需要将传入的脚本名拼接为文件路径,再通过File提供的方法去加载文本文件,读取其内容
1 | private byte[] MyCustomLoader(ref string filePath) |
为了实现热更新,最终我们会去AB包中加载lua文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!