2016-12-02 5 views
0

Я создаю многопользовательскую игру в единстве.Как прервать комнату, когда в играх Google Play нет игрока противника?

Чтобы создать комнату, я использую:

PlayGamesPlatform.Instance.RealTime.CreateQuickGame(MinOpponents, MaxOpponents, GameVariant, listener); 

Чтобы получить прогресс создания комнаты, я использую:

public void OnRoomSetupProgress(float progress) { 
} 

Вышеупомянутые функции, однако, просто вызывается один раз в progress = 20 и затем, никогда больше, если нет других доступных игроков.

С самого начала у меня не будет много игроков, использующих это приложение, я хочу подождать 10 секунд, чтобы подключиться к любому другому игроку, и если нет игроков, я хочу начать игру со встроенным AI , Для этого мне нужно прервать текущий ход установки комнаты чистым способом. Я не знаю, как я могу двигаться дальше.

Пожалуйста, дайте мне знать, если вы знаете решение для этого сценария.

ответ

0

Что касается многопользовательской игры в единстве, то этот GitHub post обсуждал только вопрос о выходе из комнаты, когда игра заканчивается с помощью PlayGamesPlatform.Instance.RealTime.LeaveRoom();, чтобы вызвать звонок к вашему слушателю OnLeftRoom.

Вы можете попробовать Adding Real-time Multiplayer Support to Your Android Game специально Adding a waiting room UI в котором говорится, что

Если вы используете предбанник UI, вам не нужно реализовывать дополнительную логику, чтобы решить, когда игра должна быть запущена или отменен, как видно ранее в shouldStartGame() и shouldCancelGame(). Когда вы получите результат Activity.RESULT_OK, вы можете начать сразу же после того, как необходимое количество участников было подключено. Аналогично, когда вы получаете результат ошибки из пользовательского интерфейса комнаты ожидания, вы можете просто покинуть комнату.

Чтобы выйти из комнаты, вызовите leave():

// leave room 
Games.RealTimeMultiplayer.leave(mGoogleApiClient, null, mRoomId); 

// remove the flag that keeps the screen on 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);