실행 이미지
using Photon.Pun; // 유니티용 포톤 컴포넌트들
using Photon.Realtime; // 포톤 서비스 관련 라이브러리
using UnityEngine;
using UnityEngine.UI;
// 마스터(매치 메이킹) 서버와 룸 접속을 담당
public class LobbyManager : MonoBehaviourPunCallbacks
{
private string gameVersion = "1"; // 게임 버전
public Text connectionInfoText; // 네트워크 정보를 표시할 텍스트
public Button joinButton; // 룸 접속 버튼
// 게임 실행과 동시에 마스터 서버 접속 시도
private void Start()
{
PhotonNetwork.GameVersion = gameVersion;
PhotonNetwork.ConnectUsingSettings();
joinButton.interactable = false;
connectionInfoText.text = "마스터 서버에 접속 중...";
}
// 마스터 서버 접속 성공시 자동 실행
public override void OnConnectedToMaster()
{
joinButton.interactable = true;
connectionInfoText.text = "온라인 : 마스터 서버와 연결됨";
}
// 마스터 서버 접속 실패시 자동 실행
public override void OnDisconnected(DisconnectCause cause)
{
joinButton.interactable = false;
connectionInfoText.text = "오프라인 : 마스터 서버와 연결되지 않음 \n접속 재시도 중...";
PhotonNetwork.ConnectUsingSettings();
}
// 룸 접속 시도
public void Connect()
{
joinButton.interactable = false;
if (PhotonNetwork.IsConnected)
{
connectionInfoText.text = "룸에 접속...";
// 이미 연결된 상태에서는 룸에 접속 시도
PhotonNetwork.JoinRandomRoom();
}
else
{
connectionInfoText.text = "빈 방이 없음. 새로운 방 생성...";
PhotonNetwork.ConnectUsingSettings();
}
}
// (빈 방이 없어)랜덤 룸 참가에 실패한 경우 자동 실행
public override void OnJoinRandomFailed(short returnCode, string message)
{
connectionInfoText.text = "빈 방이 없음. 새로운 방 생성...";
PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = 4 });
}
// 룸에 참가 완료된 경우 자동 실행
public override void OnJoinedRoom()
{
connectionInfoText.text = "방 참가 성공";
PhotonNetwork.LoadLevel("Main");
}
}
LobbyManager.cs
반응형