UniLua icon indicating copy to clipboard operation
UniLua copied to clipboard

阿楠,C#传递到lua的lightuserdata没有metadata,没法还原成class,我hack了你的代码,你看这样好不好

Open allan163 opened this issue 11 years ago • 0 comments

如果我要用Unilua操作在Scence中已有的对象,就必须把对象传给Unilua。比如我在scene中有个GameObject a, 那么我用Lua.PushLightUserData(a)把东西push到lua里。 lua 函数是这样: local function DisableButton(a) a:SetActive(false) end 这样是不行的,因为a只是一个LightUserData,实际上是一块内存,没有了GameObject的field和method了。而ffi.lua中没有把new_class_mgr暴露出来,造成虽然我可以创建新的Gameobject,但是没法从内存中还原Gameobject。 看了代码后我在resolve_builder()中加了一行 mod.cls_mgr = cls_mgr 把new_class_mgr暴露了出来,才能使用 obj = UnityEngine.cls_mgr.make_instance('GameObject', a) 这样比较丑陋,但是实现了我想要的功能。 请问还有更好的办法吗?

allan163 avatar Nov 04 '14 13:11 allan163