uLua使用总结(二)
uLua使用总结
1. LuaState类:
对LuaInterface中的Lua进行了封装。
相当于于Lua的解析器
和Lua使用一样,在使用之前需要创建一个对象。
从而通过这个lua对象去执行lua的代码。
如下:
LuaState调用lua是使用的反射技术,它是把要在lua中使用的C#类通过反射做到
可以在lua中调用。
所以在Lua中使用C#的时候需要做一些导入程序集和导入类的操作。
如下:
2. LuaScriptMgr类:
是对LuaState的再一次封装。
它对一些东西进行了处理,使用LuaScriptMgr处理lua会更加的方便。
使用之前也需要创建一个该对象,并且调用lua.Start()做一些初始化的操作。
包含三个重要函数:
DoFile:加载lua文件到lua虚拟机。
DoString:加载lua代码进入lua虚拟机。
CallLuaFunction:调用lua的函数。
LuaScriptMgr调用lua是使用的非反射技术,它把反射给去掉了,
使用非反射调用lua运行会更快。
怎么去掉的呢?
是通过Wrap包装文件把在lua中要使用的C#类预先注册到lua虚拟机中,
然后通过这种方式也可以在lua中进行对C#的方法的一些调用。
下面是一个使用LuaScriptMgr例子:
3. 用C#使用string代表lua脚本的话用@符号开头,避免字符出错
4. LuaFunction func= GetLuaFuction(“Lua中的方法名”) 得到lua中的方法对象
5. func.Call(传值) 调用该方法,并且可以往里面传值
6. 因为lua中是支持多返回值的,所以我们可以定义一个object[]数组用来接收该方法的返回值。比如:object[] objs=func.Call(123)