如何在 Defold 中从集合代理获取输入

我已经加载了一个集合代理,但即使我将输入焦点放在加载器对象上,代理内部的脚本也没有接收到任何输入。我还没有在加载器对象上接收到任何输入。

这是加载代理的脚本:

function init(self)
    msg.post(".", "acquire_input_focus")
    msg.post("/game#level1", "load")
end

function on_message(self, message_id, message, sender)
    if message_id == hash("proxy_loaded") then
        msg.post(sender, "enable")
    end
end

这是代理中的一个对象上的脚本:

function init(self)
    msg.post(".", "acquire_input_focus")
end
点赞
用户5367533
用户5367533

这是一个很常见的陷阱。输入和代理的工作原理是这样的:每个加载的代理集合都有自己的输入堆栈。输入从主要集合的输入堆栈通过代理组件路由到集合中的对象。这意味着,仅仅让加载的集合中的游戏对象获得输入焦点并不够,还需要让持有代理组件的游戏对象也获得输入焦点。有关详情,请参阅 输入文档

2015-09-28 09:01:55