XLua在C#维护了两个数据结构,ObjectPool和ReverseMap。
首次传递一个C#对象obj到Lua时,对象被加入到ObjectPool中,并为它创建一个唯一标识objId,建立obj和objId的双向映射。
ObjectPool: objId->obj ReverseMap: obj->objId
如果该对象的类型是第一次传到Lua,还会为类型创建一个元表typeMetatable。
typeMetatable:包含类成员的访问方法。
把typeMetatable注册到Lua的全局表中,这样就不会被lua gc掉。
LUA_REGISTRY: typeFullName->typeMetatab