huangkumao / CsToLua

CsToLua 是一个类似于tolua++的工具,用于把c#脚本绑定到lua

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2014.12.22
通过扫描wrap文件名,自动产生LuaBinder.cs文件
CheckType 优化
u3d Object 类转 system Object. null 变量问题

感谢晚餐同学发现的2个Bug
Lua 对象gc多线程问题
uLua objectsBackMap u3d Object匹配错误问题

2014.11.26
luajit升级为2.0.3版本,pc需要vs2012运行库
加入枚举相等判断
加入Table名称构造函数,如local go = GameObject("Light")
修改了导出方式,现在可以只写一个类型就能导出类了
导出了unity所有的类,有一些扔掉了,具体参见BindLua.cs文件
删除了某些影响build函数,应该是属于内部或者编辑器相关函数
修改了注册方式,现在所有类型注册顺序无关,
注意如果某个基类没有导出,派生类访问基类函数会出错
加入了lua xml库.
加入namespace控制,如GameObject位于UnityEngine空间
修复了LuaBase派生类的lua ref泄漏问题.

2014.11.10
向lua压入数组参数潜在的内存泄漏问题
GetNetObject 对读取的lua参数进行类型匹配检测
加入GetTypeObject读取Type类型
把压入到lua的枚举变量转变为userdata,现在重载函数完美区分double和enum类型
枚举类型加入 IntToEnum 函数,把一个int值转换为当前类型枚举
加入模版类型导出支持,如导出Dictionary<int,string>类型

2014.11.3
细分Push函数,对于数组提供一种通用的数组metatable,
减少ulua对于数组metatable个数泛滥问题
加入类c#协同支持,例子见Test.lua

2014.10.22
更细的切分LuaScriptMgr.Push 函数,主要针对System.object重载函数
消除此函数潜在的bug
所有类型加入GetClassType函数,现在可以非常便利的获取类型。
如:gameObject.GetComponent(UICamera.GetClassType())

2014.10.17
替换dll, 加入lua protobuf库

2014.10.8
加入枚举类型的导出
优化LuaScriptMgr PushResult函数。通过重载函数消除switch
重载函数中参数数量唯一的,string转换放宽

2014.9.30
string类型CheckType加上了userdata
非重载函数string可以匹配所有类型
重载函数必须自己用tostring转换为string类型.
因为object也可以转换所有类型,匹配容易出问题

2014.9.29
LuaFunction构造函数中luastate未赋值问题
感谢Chiuan提供

2014.9.28
加入了对构造函数可变参数的支持
加入了object可以转换所有参数问题。重载函数非object类型优先比较
修复了params参数为0的bug
count - 0 正确输入为 count

2014.9.26
修改了__index函数加快了索引过程,性能有很好的提升
修改了LuaScriptMgr支持多luastate
修复了协同堆栈不对的bug

感谢Chiuan、骏擎【CP】 同学的试用和反馈
2014.9.23
修复MonoBehaviour 继承类出现构造函数的问题
修复private set 属性被导出问题


tolua# 是一个类似于tolua++的工具
目的是为了快速导出unity3d类对象到lua中
依赖对象 luainterface 一个导出c#到lua的库
自己导出对象有各种好处如:

1. 极大的提升效率,luainterface采用反射调用c#函数,性能较差
2. 可以扩展操作符函数到lua中
3. 可以支持可变参数列表
4. 更好的控制c#函数可见性。
5. 可以修改包裹类,更快的回收内存
6. 可以支持数组参数。可以在lua端用table传递传递数组参数
7. 处理二义性。如lua number参数类型可以对应很多c#函数,自动选取精度最高的函数
8. 支持重载函数匹配。而luainterface反射的版本有bug
9. 类型强匹配,如果某个参数在lua传递nil,可通过重载函数支持,或者使用object参数

目前不支持的导出:
1. 泛型模版函数
2. 不支持默认参数, 可以自己通过重载函数解决
3. 数组操作符,可以用set_Item, get_Item函数取代

About

CsToLua 是一个类似于tolua++的工具,用于把c#脚本绑定到lua


Languages

Language:C# 91.6%Language:Lua 8.2%Language:Shell 0.1%Language:C 0.1%