Swift3 中的 SKScene 和 URLQueryItems?

SKScene and URLQueryItems in Swift3?

好的,我是 URL 查询和 Swift 的整个方面的新手,需要帮助。照原样,我有一个包含 SKScene 的 iMessage 应用程序。为了让用户轮流玩游戏,我需要在 1 个会话中来回发送游戏消息,正如我在此处了解到的:https://medium.com/lost-bananas/building-an-interactive-imessage-application-for-ios-10-in-swift-7da4a18bdeed

到目前为止,我的场景都在工作,但是我已经在 Apple 的冰淇淋演示中倾倒了他们来回发送连续构建的冰淇淋,我无法理解如何 "query" 我的 [=] 中的所有内容11=]所以我可以发送场景。

我不清楚 URLQueryItems 是如何工作的,因为文档与 sprite 套件场景无关。

Apple 在其当前状态下查询其 "ice cream",如下所示:

    init?(queryItems: [URLQueryItem]) {
            var base: Base?
            var scoops: Scoops?
            var topping: Topping?

            for queryItem in queryItems {
                guard let value = queryItem.value else { continue }

                if let decodedPart = Base(rawValue: value), queryItem.name == Base.queryItemKey {
                    base = decodedPart
                }
                if let decodedPart = Scoops(rawValue: value), queryItem.name == Scoops.queryItemKey {
                    scoops = decodedPart
                }
                if let decodedPart = Topping(rawValue: value), queryItem.name == Topping.queryItemKey {
                    topping = decodedPart
                }
            }

            guard let decodedBase = base else { return nil }

            self.base = decodedBase
            self.scoops = scoops
            self.topping = topping
        }
    }

fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage {
        var components = URLComponents()
        components.queryItems = iceCream.queryItems

        let layout = MSMessageTemplateLayout()
        layout.image = iceCream.renderSticker(opaque: true)
        layout.caption = caption

        let message = MSMessage(session: session ?? MSSession())
        message.url = components.url!
        message.layout = layout

        return message
    }
}

但我不知道如何 "query" 和 SKScene。我怎样才能 "send" 一个 SKScene 来回?这可能吗?

您不需要来回发送 SKScene :) 您需要做的是发送与您的游戏设置相关的信息 - 例如回合数或轮到谁,或其他任何信息,作为您的应用程序可以在另一端访问以构建场景的信息。

在不了解您的场景是如何设置的以及它如何与为其他玩家的会话收到的信息交互的情况下,我无法告诉您很多细节。但是,如果您使用 URLQueryItems 传递信息,您需要做的是,只需检索场景中的查询项列表并根据接收到的值设置场景。

如果您有关于如何做到这一点的具体问题,如果您分享完整的项目,或者 post 相关的代码位关于从一个玩家发送消息的位置以及如何其他玩家收到信息并设置场景,我(或其他人)应该可以提供帮助。

此外,如果您查看上面 post 编辑的代码中的 composeMessage,您将看到在该特定代码示例中如何将 scene/game 信息发送到另一个用户。在该过程的另一端,接收到的消息的 URL 参数将被分解以获取各种查询项的值,然后将根据这些值设置场景。看看这是如何完成的,以便弄清楚您的场景应该如何设置。