libGDX与Kotlin 移动游戏开发(8)
原文地址:Integrating Gamecenter into libGDX | Java | Multi-OS Engine | #8
由于Google Play Games Services并不完全能在iOS上集成(分数不能提交),本篇文章讲着重介绍实现使用Multi-OS Engine(简称MOE)对Game Center集成。这并不需要原生的Java框架转换器,因为MOE自从1.2版本之后就在apple.gamekit包中提供了GameKit的绑定。
即使苹果在iOS 10上删除了Game Center应用,用户依然可以登录(设定 -> Game Center)。
处理Game Center玩家身份认证
Game Center玩家身份认证非常简单。只需要注册一次AuthenticateHandler对象,便会自动处理相关过程。
https://gist.github.com/Majirefy/eb65d99cb7e7dba7ae1eaf99f870ca53
创建处理排行榜的方法
为了显示个性化的排行榜,或为了获取最高分数,需要创建一个排行榜处理方法,在此方法中得到一个包含所有排行的数组。接着设定玩家和时间范围,例如得到本日最高分数。
https://gist.github.com/Majirefy/95165d1c481e080bdc9771f1d98ab788
在处理方法中加载排行榜
当加载结束后,为防止多次加载请求,将一个布尔变量设置为false来控制加载。
https://gist.github.com/Majirefy/a8c36077939b5b5da13ef77ceb11aa77
如果在使用GKScore的过程中抛出ClassCastException异常,在类中加入如下代码:
https://gist.github.com/Majirefy/aadf8ae2a4c8ee80cf84bd51372221e3
向排行榜提交分数
向Game Center的排行榜提交一个数值也同样简单,只需要设定好排行榜的identifier身份(可以在iTunes Connect的Game Center页面找到)。如果nsError对象为null,那么分数提交成功;否则若不是null则提交失败。
https://gist.github.com/Majirefy/ce3236a3e866808b57e222979d1df3a3
检查玩家是否登录
每次提交分数、显示排行榜等操作的时候,需要检查用户是否被Game Center授权。
https://gist.github.com/Majirefy/174d2fdf2f5a5fc0cafc0dc25b311aa2
显示警告对话框
当用户无法登录Game Center的时候,可以通过对话框来提示用户手动登录。
https://gist.github.com/Majirefy/6aa32b64053b2d8f77db49425e34f3a9