2015-09-27 57 views
0

我想在我的遊戲(swift sprite kit)中使用來自GitHub的DaRkD0G的Easy-Game-Center。然而,在調用EasyGameCenter.Swift時 (在我的GameScene使用簡易遊戲中心雪碧套件集成

 EasyGameCenter.sharedInstance(self) 

)我得到一個錯誤說「無法轉換類型的值‘GameScene’預期參數類型‘的UIViewController’」。在過去的幾天裏,我嘗試改變EasyGameCenter中的不同類的類型,但總是得到答案。有沒有人有什麼建議?

回答

2

我是這個項目的創造者。

如果沒有UIViewController,您無法使用Apple的Game Center!

Framework Game Center需要UIViewController工作,這是Game Center Apple的官方文檔。

enter image description here

而輕鬆的遊戲中心需要委託UIViewController的工作完全建立,沒有它不可能使用遊戲中心

例謨遊戲中心+雪碧套件: http://www.raywenderlich.com/60980/game-center-tutorial-how-to-make-a-simple-multiplayer-game-with-sprite-kit-part-1

使用UIViewController創建實例:

這是創建EasyGameCenter實例

override func viewDidLoad() { 
    super.viewDidLoad() 

    EasyGameCenter.sharedInstance(self) 

} 

添加這一點,如果你改變的UIViewController的通知視圖控制器委託改變,它是可選的,如果你不改變的UIViewController你不需要這種方法

override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 

     EasyGameCenter.delegate = self 
    } 

就這樣,現在你可以導入的CocoaPods項目

pod 'EasyGameCenter', :git => 'https://github.com/DaRkD0G/Easy-Game-Center-Swift.git' 
+0

你將如何在特定點調出Game Center登錄屏幕(如果用戶點擊一個按鈕,可以調出高分,而他們不是登錄)? –

1

從未使用過的庫,但有消息稱:

「不能類型的值‘GameScene’轉換爲預期的參數類型 ‘的UIViewController’」

這是你的方法打電話:

class func sharedInstance(delegate:UIViewController)-> EasyGameCenter { 
     if Static.instance == nil { 
      dispatch_once(&Static.onceToken) { 
       Static.instance = EasyGameCenter() 
       Static.delegate = delegate 
       Static.instance!.loginPlayerToGameCenter() 
      } 
     } 
     return Static.instance! 
    } 

你必須傳遞一個UIViewController作爲參數而不是GameScene。

+0

這是否意味着我需要創建一個UIViewController來調用該函數,我不能在SKScene中? –

+0

@SamAcquaviva現在無法對其進行測試,但從GitHub示例中,EasyGameCenter.sharedInstance(self)在MainViewController類中被調用。我猜你正在使用GameViewController及其viewDidLoad(或viewWillLayoutSubviews)方法初始化場景,對嗎?所以,在那裏設置代表。viewDidLoad中的 – Whirlwind

+0

用於創建實例。 in viewWillLayoutSubviews它是可選的,當你改變UIViewController設置新的代理UIViewController – YannickSteph