如果用户在等候室阶段取消比赛,如何正确取消实时多人比赛?目前,没有“房间ID”可用来调用leave API。

首先创建一个快速游戏:

Bundle am = RoomConfig.createAutoMatchCriteria(1, 1, 0);
RoomConfig.Builder roomConfigBuilder = configRoom();
roomConfigBuilder.setAutoMatchCriteria(am);
RoomConfig roomConfig = roomConfigBuilder.build();
Games.RealTimeMultiplayer.create(getApiClient(), roomConfig);


然后触发onRoomCreated并显示一个等候室:

Intent i = Games.RealTimeMultiplayer.getWaitingRoomIntent(getApiClient(), room, Integer.MAX_VALUE);
startActivityForResult(i, RC_WAITING_ROOM);


之后,用户按回去,取消匹配。然后,用onActivityResultRC_WAITING_ROOM触发responseCode == Activity.RESULT_CANCELED

问题在于比赛仍然在那里,正在等待其他玩家。如果有人在10分钟后也开始快速游戏,游戏将开始!

用户取消后如何清理?

最佳答案

onActivityResult Extra具有房间信息(即使取消)。

Room room = intent.getExtras().getParcelable(Multiplayer.EXTRA_ROOM);


然后,您只需要离开房间:

Games.RealTimeMultiplayer.leave(getApiClient(), this, room.getRoomId());

10-08 14:43