Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Photon.Pun;
- using Photon.Realtime;
- using UnityEngine;
- public class FirstMenuConnect : MonoBehaviourPunCallbacks
- {
- private bool pendingQuickMatch = false;
- // Вызывается один раз по нажатию кнопки "Quick Match"
- public void QuickMatch()
- {
- // Если уже готов — просто присоединяемся
- if (PhotonNetwork.IsConnectedAndReady)
- {
- PhotonNetwork.JoinRandomRoom();
- return;
- }
- // Иначе ставим в очередь и пытаемся подключиться (если ещё не подключались)
- pendingQuickMatch = true;
- if (!PhotonNetwork.IsConnected)
- {
- Debug.Log("[QuickMatch] Not connected — calling ConnectUsingSettings()");
- PhotonNetwork.ConnectUsingSettings();
- }
- else
- {
- Debug.Log("[QuickMatch] Connecting in progress, waiting callbacks");
- }
- }
- // Коллбэк — подключены к Master и готовы к операциям
- public override void OnConnectedToMaster()
- {
- Debug.Log("[Photon] OnConnectedToMaster: " + PhotonNetwork.NetworkClientState + " Region: " + PhotonNetwork.CloudRegion);
- // Входим в лобби (опционально)
- PhotonNetwork.JoinLobby();
- // Если вызов стоял в очереди и вы не используете лобби, можно попробовать JoinRandomRoom сразу:
- // TryJoinIfPending();
- }
- // Коллбэк — присоединились к лобби (более безопасно для матчмейкинга)
- public override void OnJoinedLobby()
- {
- Debug.Log("[Photon] OnJoinedLobby");
- TryJoinIfPending();
- }
- // Вспомогательная функция — пытаемся присоединиться, если был запрос
- private void TryJoinIfPending()
- {
- if (!pendingQuickMatch) return;
- pendingQuickMatch = false;
- if (PhotonNetwork.IsConnectedAndReady)
- {
- PhotonNetwork.JoinRandomRoom();
- }
- else
- {
- Debug.LogWarning("[TryJoinIfPending] Still not ready: " + PhotonNetwork.NetworkClientState);
- }
- }
- public override void OnJoinRandomFailed(short returnCode, string message)
- {
- Debug.LogWarning($"JoinRandomFailed: {returnCode} {message} — creating room instead");
- PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = 8 });
- }
- public override void OnDisconnected(DisconnectCause cause)
- {
- Debug.LogError("[Photon] OnDisconnected: " + cause + " State: " + PhotonNetwork.NetworkClientState);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment