2017-04-09 67 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