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模块中。之后在不同的目标平台模块中实现这个接口。

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

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

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

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):

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

初始化Google API Client

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

PlayServiceListener实现:

提交游戏分数

显示玩家排行榜

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

打赏
Majirefy

Majirefy

一个没有技术的技术宅,喜欢买买买,热爱生活,贪图享受。

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注