Как сделать таймер до начала многопользовательской игры в Unity 5.?

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

private int j = 10;

void Start()
{
    if (isLocalPlayer)
    StartCoroutine (GameStartTimer ());
}


IEnumerator GameStartTimer()
{
    while (j > 0) {
        j = j - 1;
        Debug.Log ("Value of j is : " + j);
        startTimertext.text = j.ToString ();
        yield return new WaitForSeconds (1);
    }
    //ObjectParentingSystem ();
    GetPlayerAnimandRGB ();
    StartCoroutine (StartPlayerTimer ());
    //yield return new WaitForSeconds (10);
    gameStartTextPanel.SetActive (false);
}

Я также пробую ниже код, но не могу добиться успеха.

void Start()
{
    if (isServer){
        StartCoroutine (GameStartTimer ());   
    }
    else{
        GetPlayerAnimandRGB ();
        StartCoroutine (StartPlayerTimer ());
        //yield return new WaitForSeconds (10);
        gameStartTextPanel.SetActive (false);
    }
}

Если у кого-то есть код для этого или учебники, то, пожалуйста, поделитесь ссылкой.

1 ответ

Решение

Если я правильно понимаю, у вас есть таймер ожидания, который тикает в течение 10 секунд. Если это значение равно нулю, запускается таймер запуска игры, и играть могут только те, кто подключен.

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

Другие вопросы по тегам