Hasli4

Untitled

Aug 27th, 2025
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.82 KB | None | 0 0
  1. using Photon.Pun;
  2. using Photon.Realtime;
  3. using UnityEngine;
  4.  
  5. public class FirstMenuConnect : MonoBehaviourPunCallbacks
  6. {
  7.     private bool pendingQuickMatch = false;
  8.  
  9.     // Вызывается один раз по нажатию кнопки "Quick Match"
  10.     public void QuickMatch()
  11.     {
  12.         // Если уже готов — просто присоединяемся
  13.         if (PhotonNetwork.IsConnectedAndReady)
  14.         {
  15.             PhotonNetwork.JoinRandomRoom();
  16.             return;
  17.         }
  18.  
  19.         // Иначе ставим в очередь и пытаемся подключиться (если ещё не подключались)
  20.         pendingQuickMatch = true;
  21.  
  22.         if (!PhotonNetwork.IsConnected)
  23.         {
  24.             Debug.Log("[QuickMatch] Not connected — calling ConnectUsingSettings()");
  25.             PhotonNetwork.ConnectUsingSettings();
  26.         }
  27.         else
  28.         {
  29.             Debug.Log("[QuickMatch] Connecting in progress, waiting callbacks");
  30.         }
  31.     }
  32.  
  33.     // Коллбэк — подключены к Master и готовы к операциям
  34.     public override void OnConnectedToMaster()
  35.     {
  36.         Debug.Log("[Photon] OnConnectedToMaster: " + PhotonNetwork.NetworkClientState + " Region: " + PhotonNetwork.CloudRegion);
  37.         // Входим в лобби (опционально)
  38.         PhotonNetwork.JoinLobby();
  39.  
  40.         // Если вызов стоял в очереди и вы не используете лобби, можно попробовать JoinRandomRoom сразу:
  41.         // TryJoinIfPending();
  42.     }
  43.  
  44.     // Коллбэк — присоединились к лобби (более безопасно для матчмейкинга)
  45.     public override void OnJoinedLobby()
  46.     {
  47.         Debug.Log("[Photon] OnJoinedLobby");
  48.         TryJoinIfPending();
  49.     }
  50.  
  51.     // Вспомогательная функция — пытаемся присоединиться, если был запрос
  52.     private void TryJoinIfPending()
  53.     {
  54.         if (!pendingQuickMatch) return;
  55.  
  56.         pendingQuickMatch = false;
  57.  
  58.         if (PhotonNetwork.IsConnectedAndReady)
  59.         {
  60.             PhotonNetwork.JoinRandomRoom();
  61.         }
  62.         else
  63.         {
  64.             Debug.LogWarning("[TryJoinIfPending] Still not ready: " + PhotonNetwork.NetworkClientState);
  65.         }
  66.     }
  67.  
  68.     public override void OnJoinRandomFailed(short returnCode, string message)
  69.     {
  70.         Debug.LogWarning($"JoinRandomFailed: {returnCode} {message} — creating room instead");
  71.         PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = 8 });
  72.     }
  73.  
  74.     public override void OnDisconnected(DisconnectCause cause)
  75.     {
  76.         Debug.LogError("[Photon] OnDisconnected: " + cause + " State: " + PhotonNetwork.NetworkClientState);
  77.     }
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment