Swift-无法使用 SpriteKit 呈现 Game Center

Swift-Can't present Game Center with SpriteKit

这是我遇到问题的代码块 with.It 由于 'presentViewController'

给我错误
func authenticateLocalPlayer(){

    let localPlayer = GKLocalPlayer.localPlayer()

    localPlayer.authenticateHandler = {(viewController, error) -> Void in

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

        }

        else {
            print((GKLocalPlayer.localPlayer().authenticated))
        }
    }

}

我知道这是因为 SKScene 已经有一个 UIViewController,但我不知道如何表示它。

您不能从 SKScene 中调用 presentViewController,您需要在 UIViewController 中调用它。

因此您想找到包含您的 Sprite Kit 内容的父视图控制器并在那里调用该函数。

在场景中有简单的处理方法。试试看,让我们知道。我不完全不同意上面的回答,但他们应该更好地指导你并给出正确的答案。是的,您必须在 UIViewController 上调用 presentViewController。由于您的 SKScene 使用的是 SKView,它是 View 的子类,但根本不是 UIView,因此从 self 调用 presentViewController 意味着您要求 SKView 对象呈现 SKView 不能呈现的 UIViewController。但这里有一个简单的解决方案,因为 SKView 是 UIView 本身的子类,所以要求 SKView 的根视图控制器像这样为你做这件事。 你的电话将是这样的(我在 objective C 中写它,因为我不在 swift 中编码,但两种语言都是如此)

[self.view.window.rootViewController presentViewController:viewController animated:YES completion:nil];

如你所见,你必须问 'self.view.window.rootViewController' 而不是问 'self'。你可以在你的场景中做到这一点。给你。