Я пытался внедрить Game Center в свою игру 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:]: нераспознанный селектор отправлен экземпляру 0x178169e40 (lldb)
Я просмотрел связанные вопросы, и все они предлагают изменить класс View в IB на класс SKView, но не повезло. Точка останова исключения останавливается на строке:
SKView *spriteView = (SKView *)self.view;
spriteView.showsDrawCount = YES;
И вид явно типа SKView, но все равно пишет, что spriteView типа UIView. Я не уверен, что это имеет значение, поскольку основной контроллер представления игры является подклассом UIViewController, что необходимо для представления таблицы лидеров Game Center, поэтому я понятия не имею, как исправить эту ошибку.
(SKView *)self.view
и почему вы говорите, что этоSKView
(как вы это доказали)? - person Wain   schedule 29.05.2014self
? Вы уверены, чтоself.view
этоSKView
? Если это не так, вы не можете просто разыграть его таким образом и сделать егоSKView
. Кастинг работает не так. - person Fogmeister   schedule 29.05.2014(SKView *)self.view
находится в моем методе viewDidLoad GameViewController. Он используется для создания представления внутри контроллера представления из Документация Apple В построителе интерфейсов я назначил представление внутри игрового контроллера представления классу SKView. - person evanlws   schedule 29.05.2014