关于LuaFramework中的LuaManager.cs类

在ulua时代,有个LuaScriptMgr.cs类,而在LuaFramework中LuaManager.cs管理器类是新增加的,它基本是对LuaState的包装管理类,通过这个类,框架只要拿到它的引用,就可以直接访问Lua的功能,

这里面有几个地方需要说下,
(1)InitStart函数,相当于LuaScriptMgr中的Start,用于直接将Wrap注册进Lua虚拟机、初始化Lua文件的加载路径、初始化LuaBundle(启用的话),启动Lua里面的Main.lua脚本,跟启动StartLooper,LuaLooper是蒙哥为了c#驱动lua的协同,实现的一个功能类,如果不启动它,lua中那些扩展的功能:coroutine.www类,coroutine.wait都无法实现。值得一说的是tolua#增加的coroutine.stop函数,目前可以停止了。这也是ulua的协同没有的功能。

(2)OpenLibs方法,为了打开众多的第三方库,比如pbc、cjson等库,tolua#包装了这个LuaState.OpenLibs函数,里面的参数是LuaCSFunction类型,也就是被置了标记的C#访问Native函数,如:
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
public static extern int luaopen_pb(IntPtr L);
也就是说如果用户需要增加新的第三方原生库的话,需要添加类似的打开库的LuaCSFunction函数,并且在LuaManager.OpenLibs方法里面打开它(lua.OpenLibs(LuaDLL.luaopen_xxx);  ),才能生效。

(3)InitLuaPath函数。在ulua时代,因为原作者加载lua文件有3处之多,为了方便用户只修改一次,我们把所有的入口都引入到Util.LuaPath,这个也是很多人问的最多的一个问题,而且有人觉得好垃圾的方式,但是又有什么好办法呢?tolua#这块基本重写了,所以增加了类似Util.AddSeachPath函数,让用户可以将不同的位置的Lua文件目录都做为搜索路径。用户也可以自己控制了。这样就比Util.LuaPath好很多了。

(4)InitLuaBundle函数。这个在ulua时代没有这个功能,这个功能就是将已经打包lua代码成assetbundle的文件加载进来,以便可以从里面加载到lua代码。加载功能实现在一个继承自LuaFileUtils的父类,LuaLoader : LuaFileUtils  这个类稍后再说。里面的loader.beZip 是个是否要使用LuaBundle的开关。

(5)DoFile函数。就是将一个lua代码文件(字符串string)加载到lua虚拟机中,运行起来。

(6)CallFunction函数。就是让执行一个lua函数,执行的参数格式为:(“table.function”,参数1,参数2,...)、

(7)LuaGC函数。让lua虚拟机回收内存空间。

(8)Close等其他函数都是跟ulua一样,关闭luastate,清理操作等。

[本日志由 admin 于 2016-03-20 08:23 PM 更新]
上一篇: 关于LuaFramework中的MVC框架
下一篇: 关于LuaFramework中的LuaLoader.cs类
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭