无法实现 GKGameCenterControllerDelegate

Can't Implement GKGameCenterControllerDelegate

我已经使用 GameViewController 验证播放器,进入我的菜单 class 并编写协议 GKGameCenterControllerDelegate 时出现错误,Type 'Menu' does not conform to protocol 'GKGameCenterControllerDelegate'。我不明白这个错误是什么意思以及如何解决它。我尝试过来自不同地方的东西,但我认为我不明白如何正确地做。

这是我出错的行,在 Menu.

这个词下面
class Menu: SKScene, GKGameCenterControllerDelegate

GKGameCenterControllerDelegate 协议 as the documentation specifies 具有一种必需的方法:gameCenterViewControllerDidFinish。您需要在 Menu class.

中实现此方法

编辑:针对您的评论,我将提供更深入的解释。

协议是一个接口,包括一组预期要实现的功能。任何实现该协议的东西,称为委托,都应该定义该集合中的所有函数。这些函数将由其他 class 引用您的实现的函数使用,并将在必要时调用它们。

把它想象成在银行工作。您是一名出纳员,负责与客户打交道并分发钱款。但是,偶尔您的抽屉会 运行 缺钱,因此您必须请求您的经理从金库中取回更多的钱。现在,哪个经理为您取回现金并不重要。可以是你的直系亲属,他的老板,一直到公司的老板。您所关心的只是能够获得现金,以便您可以继续帮助客户。作为出纳员,您将定义一个协议,其中包含如下方法:func requestCash(amount: Int) -> Int?。您还将有一个负责实施该方法的委托人,或者在我们的上下文中,有人负责为您获取现金。现在,每当您 运行 缺钱时,您都有办法赚到更多钱。

因此,当您打卡开始出纳工作时,您需要您的经理有能力为您取现。假设他们雇用了一个没有资历打开金库的新人。好吧,他不会为你工作。当他说他将成为您当天的经理(或实施您的协议)时,您知道他实际上无法从金库中为您取现金(不实施您的方法)。所以,你抱怨。因此你看到的错误。

注意:您可以有可选的协议方法。这是完全有效的(在我们上面的示例中,它可能类似于 func approveLoanRequest(loan: Loan) -> Bool - 您可以简单地要求客户在另一天回来以批准贷款请求,这在您的 day-to-day 中没有必要)。在这种情况下,如果未实现,则不会调用这些方法,如果未实现,带有协议的 class 不会抛出错误。