Skip to content

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

@allan163

Description

@allan163

如果我要用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)
这样比较丑陋,但是实现了我想要的功能。
请问还有更好的办法吗?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions