ulua 路径小记
在学习ulua时,require
模块的根路径可以为项目的Lua文件夹或者ToLua文件夹(Editor下),但是在package.path
和package.cpath
中并没有看到当前项目的路径,那require是如何找到Lua和ToLua文件夹的路径的呢?
* ulua在初始化LuaState
时,会先解析package.path
, 并将其存入LuaFileUtils
的SearchPaths
中(LuaState.cs line:603),并将Lua和ToLua的目录添加其中(LuaState.cs line:187)。
* 在LuaState的构造函数中,会调用ToLua.OpenLib(T)
,该方法定义了一下特殊方法,可以在lua中使用,如typeof
等。
* OpenLib
方法会在package.loaders
数组中,再添加一个loader,并且将其放到数组的第二个位置。(ToLua.cs line:192)注:Lua require模块时,会依次调用package.loader中的方法,找到则返回
* loader的作用就是检测传入的文件名(module名),是否在LuaFileUtils
的SearchPaths
,如果存在就读取文件,若不存在则返回空(LuaFileUitls.cs line:170)