【问题标题】:SKScene and URLQueryItems in Swift3?Swift3 中的 SKScene 和 URLQueryItems?
【发布时间】:2017-04-09 21:17:06
【问题描述】:

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

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

我不清楚URLQueryItems 的工作原理,因为文档与精灵套件场景无关。

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

    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?这可能吗?

【问题讨论】:

    标签: ios swift swift3 sprite-kit imessage-extension


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢,是的,我想通了,但现在遇到了麻烦,因为您只能存储字符串.. 你能看看stackoverflow.com/questions/43334841/…
    • 很高兴能帮上忙 :) 我也回答了你的其他问题。希望这会有所帮助...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多