SpriteKit 游戏中心认证

Posted

技术标签:

【中文标题】SpriteKit 游戏中心认证【英文标题】:SpriteKit Game Center Authentication 【发布时间】:2016-09-13 23:33:28 【问题描述】:

我正在做一个精灵套件游戏。我对 Game Center 有疑问:我如何验证玩家身份? 在 AppDelegate.swift 我有这个代码:

     func authenticateLocalPlayer()
     


     var localPlayer = getLocalPlayer() // see GKLocalPlayerHack.h
    localPlayer.authenticateHandler =
        (viewController : NSViewController?, error : NSError?) -> Void in
            if viewController != nil
            
                self.presentViewController(viewController!, animated:true, completion: nil)

                        

但我收到此错误:

Value of type 'AppDelegate' has no member 'presentViewController'

在这一行:

 self.presentViewController(viewController!, animated:true, completion: nil)

我该如何解决这个问题?

【问题讨论】:

你在错误的地方使用 self.presentViewController 相对于 UIViewController 的 self.presentViewController 函数,所以在 UIViewController 中编写你的函数 问题是我没有 UIViewController……我有一个没有视图控制器的 SpriteKit 游戏……我只需要在启动时使用 Game Center 对玩家进行身份验证…… 【参考方案1】:

我认为你需要使用这样的东西。我不能 100% 确定您为 parentWindow 位设置了什么,我的 OSX 知识有限。

let dialogController = GKDialogController.shared()
dialogController.parentWindow = yourWindow // not exactly sure what you need to set here
dialogController.presentViewController(viewController)

Implementing GameKit.framework on OSX, cannot authenticate localPlayer

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/GameKit_Guide/DisplayingGameCenterUserInterfaceElements/DisplayingGameCenterUserInterfaceElements.html

希望这会有所帮助。

【讨论】:

我有一个没有视图控制器的 sprite kit 游戏...我只需要通过 Game Center 进行玩家身份验证...我需要从 sprite kit 中出现一个窗口并让我的玩家登录到 Game Center 服务。 ..有可能这样做吗? 我使用了您的代码,但现在我在控制台中收到警告“无法从游戏中获取服务。请归档包含 GameKit 日志和任何游戏崩溃日志的雷达,游戏运行完美但没有游戏中心身份验证... 我也收到了警告:与名为 com.apple.gamed.osx 的服务的连接已失效。 对不起,我的答案是基于我发布的链接。我对 OSX 的了解几乎为零。 谢谢,我升级到 Xcode 8 并将我的代码转换为 Swift 3.0 语法...现在身份验证工作!【参考方案2】:

我建议使用视图控制器 ;-) 看我这里的回答我就不一一复制了。

Adding Game Center Leaderboard

【讨论】:

以上是关于SpriteKit 游戏中心认证的主要内容,如果未能解决你的问题,请参考以下文章

暂停 SpriteKit 游戏 - UIApplicationWillResignActive 与 UIApplicationDidBecomeActive?

如何隐藏 SpriteKit 游戏的状态栏? [复制]

SpriteKit - 组织保存的游戏数据的最佳方式是啥?

使用“bodyWithTexture”(SpriteKit)时更改 SKPhysicsBody 的中心点

在 SpriteKit 项目中包含一个 UIKit 小游戏

在 SpriteKit 游戏中计算速度