swift – tvOS的游戏中心没有出现
发布时间:2020-12-14 04:54:43 所属栏目:百科 来源:网络整理
导读:我目前在我的iOS目标中使用Game Center,但没有在tvOS目标中工作. 我已经添加了Leaderboard图像并将标识符放在Xcode中: 这是我用来调出排行榜并启动播放器的课程.它叫做GameKitHelper.swift: import UIKitimport Foundationimport GameKitlet PresentAuthen
我目前在我的iOS目标中使用Game Center,但没有在tvOS目标中工作.
我已经添加了Leaderboard图像并将标识符放在Xcode中: 这是我用来调出排行榜并启动播放器的课程.它叫做GameKitHelper.swift: import UIKit import Foundation import GameKit let PresentAuthenticationViewController = "PresentAuthenticationViewController" class GameKitHelper: NSObject { static let sharedInstance = GameKitHelper() var authenticationViewController: UIViewController? var gameCenterEnabled = false func authenticateLocalPlayer() { //1 let localPlayer = GKLocalPlayer() localPlayer.authenticateHandler = {(viewController,error) in if viewController != nil { //2 self.authenticationViewController = viewController NSNotificationCenter.defaultCenter().postNotificationName(PresentAuthenticationViewController,object: self) } else if error == nil { //3 self.gameCenterEnabled = true } } } func reportAchievements(achievements: [GKAchievement],errorHandler: ((NSError?)->Void)? = nil) { guard gameCenterEnabled else { return } GKAchievement.reportAchievements(achievements,withCompletionHandler: errorHandler) } func showGKGameCenterViewController(viewController: UIViewController) { guard gameCenterEnabled else { return } //1 let gameCenterViewController = GKGameCenterViewController() //2 gameCenterViewController.gameCenterDelegate = self //3 viewController.presentViewController(gameCenterViewController,animated: true,completion: nil) } func saveHighScore(identifier: String,score: Int) { if (GKLocalPlayer.localPlayer().authenticated) { let scoreReporter = GKScore(leaderboardIdentifier: identifier) scoreReporter.value = Int64(score) let scoreArray:[GKScore] = [scoreReporter] GKScore.reportScores(scoreArray,withCompletionHandler: { error -> Void in if (error != nil) { print("error") } else { print("Posted score of (score)") } }) } } } extension GameKitHelper: GKGameCenterControllerDelegate { func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) { gameCenterViewController.dismissViewControllerAnimated(true,completion: nil) } } NavigationController类: override func viewDidLoad() { super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self,selector: Selector("showAuthenticationViewController"),name: PresentAuthenticationViewController,object: nil) GameKitHelper.sharedInstance.authenticateLocalPlayer() } func showAuthenticationViewController() { let gameKitHelper = GameKitHelper.sharedInstance if let authenticationViewController = gameKitHelper.authenticationViewController { topViewController?.presentViewController(authenticationViewController,completion: nil) } } deinit { NSNotificationCenter.defaultCenter().removeObserver(self) } 解决方法
确保您的应用资产目录中有“Apple TV Dashboard Image”.仪表板图稿应为923×150,具有透明度,并且不需要分层,因为用户无法选择它.
tvOS Human Interface Guidelines声称仪表板图稿是可选的,但根据我的经验,GKGameCenterViewController将拒绝出现,如果您没有. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |