Страница 1 из 1

PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 07 апр 2021, 13:24
ColdWind
Делаю мультиплеер на PUN. Не могу понять когда и где мне корректно вызывать проверку на заполненность комнаты, которая при успехе отправляла бы всех игроков на другую сцену.
Грубо говоря хочу сделать что-то типо матчмейкинга из той же доты или кс (но только без кнопки реди) (нужное кол-во игроков собралось - все отправились на карту).
если запихивать в OnJoinedRoom() или в Update() проверку в духе
Синтаксис:
Используется csharp
if (PhotonNetwork.IsConnected && PhotonNetwork.InRoom && PhotonNetwork.PlayerList.Length == maxPlayers)
   {
      PhotonNetwork.LoadLevel("mapname");
   }

Будет грузить только одного игрока в не до конца прогруженную карту а второй останется в меню.

-------------------
Решено, проблема произошла из за того что в апдейте постоянно пыталось перегрузить уровень.
Синтаксис:
Используется csharp
void Update()
{
    if ( PhotonNetwork.IsConnected && PhotonNetwork.InRoom && PhotonNetwork.PlayerList.Length == maxPlayers && PhotonNetwork.IsMasterClient && !gameIsStarted)
    {
        //загрузка
        gameIsStarted = true;
    }
}

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 07 апр 2021, 14:49
krauser0993
В GameManager пропиши булевые значения игроков.
Добавь игрокам кнопку готов, когда нажимает меняй булевую на true
Если количество булевых переменных = макс. игроков то запускай катку)

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 07 апр 2021, 14:51
Jarico
Ну так в OnJoinedRoom проверку сделай, если количество игроков равно MaxPlayers то отправляй всем команду что игра начинается и сцена загружается. Тут даже без апдейтов можно обойтись

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 07 апр 2021, 15:05
ColdWind
Jarico писал(а):Ну так в OnJoinedRoom проверку сделай, если количество игроков равно MaxPlayers то отправляй всем команду что игра начинается и сцена загружается. Тут даже без апдейтов можно обойтись

не работает, один клиент грузит на половину, второй в меню. прям как с апдейтом.

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 07 апр 2021, 15:40
Alkos26Rus
ColdWind писал(а):
Jarico писал(а):Ну так в OnJoinedRoom проверку сделай, если количество игроков равно MaxPlayers то отправляй всем команду что игра начинается и сцена загружается. Тут даже без апдейтов можно обойтись

не работает, один клиент грузит на половину, второй в меню. прям как с апдейтом.

Что значит грузит наполовину, если все игроки в сборе, то мастер клиент отправляет команду всем на переход сцены, там уже все рано или поздно подключатся, в чем проблема

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 08 апр 2021, 09:22
ColdWind
Alkos26Rus писал(а):
ColdWind писал(а):
Jarico писал(а):Ну так в OnJoinedRoom проверку сделай, если количество игроков равно MaxPlayers то отправляй всем команду что игра начинается и сцена загружается. Тут даже без апдейтов можно обойтись

не работает, один клиент грузит на половину, второй в меню. прям как с апдейтом.

Что значит грузит наполовину, если все игроки в сборе, то мастер клиент отправляет команду всем на переход сцены, там уже все рано или поздно подключатся, в чем проблема

игроку - не подгружает игровые объекты которые спавнятся через скрипт в геймменеджере на старте. Хосту даже префаб не создает и не переносит на сцену.
Выдает ошибку "PUN cancels an ongoing async level load, as another scene should be loaded. Next scene to load"

Re: PUN. Запуск сцены когда комната полная

СообщениеДобавлено: 08 апр 2021, 10:54
Alkos26Rus
ColdWind писал(а):
Alkos26Rus писал(а):
ColdWind писал(а):
Jarico писал(а):Ну так в OnJoinedRoom проверку сделай, если количество игроков равно MaxPlayers то отправляй всем команду что игра начинается и сцена загружается. Тут даже без апдейтов можно обойтись

не работает, один клиент грузит на половину, второй в меню. прям как с апдейтом.

Что значит грузит наполовину, если все игроки в сборе, то мастер клиент отправляет команду всем на переход сцены, там уже все рано или поздно подключатся, в чем проблема

игроку - не подгружает игровые объекты которые спавнятся через скрипт в геймменеджере на старте. Хосту даже префаб не создает и не переносит на сцену.
Выдает ошибку "PUN cancels an ongoing async level load, as another scene should be loaded. Next scene to load"

Похоже ты пытаешся загрузить сцену, когда сцена еще не загружена, не знаю может у тебя несколько команд срабатывают.
В фотоне есть такой параметр
Синтаксис:
Используется csharp
PhotonNetwork.AutosyncScene = true;

По идее он должен загружать ту сцену клиентам которая у мастерклиента, тобишь ты тупо меняешь сцену у мастера а клиенты должны сами подключится