UIView不会投射到SKView
我一直试图在我的Sprite Kit游戏中实现游戏中心,但每次我尝试呈现排行榜…
-(void)showLeaderboard:(UIViewController*)gcvc { GKGameCenterViewController *leaderboardController = [[GKGameCenterViewController alloc] init]; if (leaderboardController != NULL) { leaderboardController.leaderboardIdentifier = @"Game_Leaderboard"; leaderboardController.viewState = GKGameCenterViewControllerStateLeaderboards; leaderboardController.gameCenterDelegate = self; UIViewController *vc = self.view.window.rootViewController; [vc presentViewController: leaderboardController animated: YES completion:nil]; } }
游戏崩溃在启动时出现错误:
[UIView setShowsDrawCount:]:无法识别的select器发送到实例0x178169e40(lldb)
我查了一下相关的问题,他们都提出把IB的View类改成SKView类,但是没有运气。 exception断点停在行:
SKView *spriteView = (SKView *)self.view; spriteView.showsDrawCount = YES;
该视图显然是SKViewtypes,但仍然表示spriteView是UIViewtypes。 我不确定这是否应该是重要的,因为游戏的主视图控制器是UIViewController的一个子类,这是呈现Game Center排行榜所需要的,所以我不知道如何解决这个错误。
经过很多调整之后,显然有一些代码的问题。 UIViewController *vc = self.view.window.rootViewController;
因为我已经通过视图控制器作为参数,而不是遵循苹果代码创buildSKView,我简单地连接了一个IBOutlet并摆脱了SKView *spriteView = (SKView *)self.view;
我甚至从来没有想过改变viewDidLoad方法,所以谢谢你们!
对于它的价值,我通常从主UIViewController获取SKView,如下所示:
/// Returns the Director's own view, but as a SKView *. @property (weak, readonly) SKView * skview; // ... - (SKView *) skview { return (SKView *)self.view; }