在我的Android游戏中,我有一个回合制的多人游戏。用户在大厅等待对手,只要3个匹配,他们就会一起去新的游戏室,这是另一个活动而不是大厅。
文档建议让活动扩展BaseGameActivity。但是当我在玩家已经连接时切换活动时,我不需要将连接部分放在我的活动然后绑定的服务中吗?
有没有人尝试使用游戏服务?如果我不能使用BaseGameActivity,该如何开始?
答案 0 :(得分:23)
因此,我们将所有Google Play游戏服务示例编写为单活动游戏的原因之一是因为在活动之间切换需要您从GamesClient断开连接并从新活动中连接一个新活动。
所以使用Fragments可能是解决这个问题的最简单方法。它也非常干净,如果你愿意,可以通过组合它们来制作平板电脑布局。
特别是,如果您要设置多人游戏,断开连接会使您与房间断开连接,因此在开始握手后您无法切换到其他活动: - )
答案 1 :(得分:3)
我正在使用这些新的Google Play游戏服务开发多人游戏。它包括成就和排行榜,以及多人游戏。
从按钮单击示例项目中,我发现他们(Google)广泛使用了片段,并且保持在单个活动的范围内。在我的自定义游戏中,我在没有问题的情况下跳转。
您需要保留一些Google Play游戏服务对象,但服务可能过度,除非您的游戏需要执行长时间运行的非UI代码。根据我的经验,如果您在活动之间切换,您将需要保留当前参与游戏的房间和参与者ID的ID。
由于“连接部分”是无状态的,只需根据需要重新连接即可。您甚至可以通过Intent包将房间/参与者ID传递给每个活动(或使用单例模式方法)。这样,您可以节省电池寿命,性能等。
答案 2 :(得分:1)
该文档说明了在需要时如何在没有BaseGameActivity的情况下使用游戏服务。
例如,在登录期间:
https://developers.google.com/games/services/training/signin
单击“登录”按钮应启动登录流程。如果您使用示例中提供的BaseGameActivity基类,只需调用beginUserInitiatedSignIn()方法即可。否则,您必须手动调用GamesClient对象的connect()方法。
对于您的具体问题,我不认为这是一个问题,所有控件都在Google Play中,您只需要获取GamesClient,据我所知,如果一个活动的连接将在那里,你从另一个活动访问它(但我还没有测试多人游戏)。