libGDX与Kotlin
移动游戏开发(6)

原文地址:How to integrate Google Play Games Services and Admob in libGDX using Kotlin | Android | #6


Google Play Games Services是最为难以集成到libGDX的Android和iOS(Multi-OS Engine,RoboVM已经关闭)的API之一。libGDX有一篇官方教程。可以参考GitHub上的BaseGameUtils范例工程。不过再继承另一个工程似乎是不明智的做法(需要做太多额外的无用功),所以使用平台代码接口完成。主要思路是编写一个带有基本方法的接口放在core模块中。之后在不同的目标平台模块中实现这个接口。

https://gist.github.com/Majirefy/6466fc660f3d2efce9c5e5ff1ca43f80

通过GitHub上的Splinter Sweets范例代码可以看出,范例使用了GameManager这个单例来管理游戏计时器、添加或移除内容。在这个类中,设置GameEventListener:

https://gist.github.com/Majirefy/e6e74801ab85d8d06980f887b324e312

这个监听器显式地声明为一个可以为空(null)的对象,这意味着如果不设置监听器,游戏不会抛出空指针异常(NullPointerException),这对桌面和web或者内测版本来说很有用。

如果想要现实Admob的广告(使其展示给用户),只需要调用以下代码的任意一个:

https://gist.github.com/Majirefy/5bfa829119d077bcd8df104c09c82714

Android端实现

Android端相比于iOS端来说更简单。基本上遵照官方教程即可。首先,需要在android/build.gradle文件中加入依赖:

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
    compile 'com.google.android.gms:play-services-games:9.6.1'
}

接下来要实现GameEventListener接口(命名为AndroidGameEventListener):

https://gist.github.com/Majirefy/85ec0a2a640f2decff51d90df807a5d5

在构造函数中初始化广告相关内容。当用户关闭广告之后,需要再去申请一个新的广告,所以调用了requestNewInterstitial()方法。当过去50秒的游戏时间之后,游戏页面被展示出来。在这个过程中,条状广告banner应该被隐藏,因为用户可能会截图,因此需要使用Android Handler

https://gist.github.com/Majirefy/c77a2031d443e38f5be1a8837907e9ed

初始化Google API Client

首先,需要初始化GoogleApiClient。这要使用Android的context和一个负责处理连接失败或者其它问题反馈的监听器:

https://gist.github.com/Majirefy/d4e179340f6a9ec5f3baa4653fd98059

PlayServiceListener实现:

https://gist.github.com/Majirefy/07c61350e4093dab401e007b9f786576

提交游戏分数

https://gist.github.com/Majirefy/666fbe51fa0b6fb9c6d5c495c7b4329e

显示玩家排行榜

https://gist.github.com/Majirefy/0fed1d0cb6e0b559d67ae4bd5cd20da5

注意:为了不使本文过于冗长,省略了一些方法的实现,譬如检查用户是否已经登录、是否连接到了Google Play Service。

Majirefy

Majirefy

喜欢折腾,喜欢各种各样的生活。曾经年少不懂事,看着别人写代码的样子感觉好帅,于是走上了半个不归路……然而,比起代码更喜欢写一些纯粹的文章,却经常因为自我不满意删掉重来。喜欢分享,无论是生活美好的瞬间,还是技术上的发现,虽然经常苦恼技术能力不强。由于喜欢买qiong买qiong买qiong,所以时常写一些类似使用体验的文章。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。