0

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

到目前为止,我的场景都在工作,但是我倾注了 Apple 的冰淇淋演示,他们在其中来回发送连续制作的冰淇淋,我无法理解如何“查询”我SKScene的所有内容,以便发送场景。

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

苹果在当前状态下查询他们的“冰淇淋”,​​如下所示:

    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
    }
}

但我不知道如何“查询”一个SKScene. 我如何SKScene来回“发送”?这可能吗?

4

1 回答 1

1

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

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

如果您对如何做到这一点有具体问题,如果您共享整个项目,或者发布相关代码,说明您从一个玩家发送消息的位置以及其他玩家如何接收信息并设置现场,我(或其他人)应该能够提供帮助。

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

于 2017-04-10T02:57:46.750 回答