2015-09-27 27 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