2017-04-09 65 views
0

好吧,我是新的URL查询和Swift的整个方面,需要帮助。现在,我有一个iMessage应用程序,它包含和SKScene。对于用户轮流玩游戏,我需要在1个会话内来回传送游戏,正如我在此学到的:https://medium.com/lost-bananas/building-an-interactive-imessage-application-for-ios-10-in-swift-7da4a18bdeedSwift3中的SKScene和URLQueryItems?

到目前为止,我有我的场景都在工作,但是我倒了苹果公司的冰淇淋演示,他们来回发送连续建立的冰淇淋,我不知道如何“查询”我的SKScene,所以我可以发送现场。

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

苹果公司查询自己的“冰淇淋”,​​在目前的状态是这样的:

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

回答

1

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

不知道更多关于你的场景是如何建立的,以及它如何与其他玩家的会话接收到的信息相互作用,我不能告诉你很多具体细节。但是,如果您要使用URLQueryItem来传递信息,只需检索场景中的查询项列表并根据收到的值设置场景即可。

如果您对如何完成这项工作有特定疑问,如果您要分享整个项目,或者发布相关代码,以了解您从哪个玩家发出消息的位置以及其他玩家如何接收信息并设置场景,我(或其他人)应该能够提供帮助。此外,如果您在上面发布的代码中查看,您将看到在特定的代码示例中,场景/游戏信息是如何发送给其他用户的。在过程的另一端,接收到的消息的URL参数将被分解以获取各种查询项目的值,然后基于这些值设置场景。看看这是怎么完成的,以便弄清楚你的场景应该如何设置。

+0

谢谢,是的我想通了,但现在有麻烦,因为你只能存储字符串..你可以请看看http://stackoverflow.com/questions/43334841/can-you-send-objects-other -than-strings-in-urlqueryitems – skyguy

+0

很高兴得到了帮助:)我也回答了你的其他问题。希望这有助于... – Fahim