[Photon Pun2] 룸 생성,입장 / 빌드
저번에는 서버 접속, 로비 생성, 접속까지 해봤다.
오늘은 룸 생성 및 접속을 해보자.
1. 로비 접속 -> 랜덤 룸 입장 -> 실패 -> 룸 생성
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Realtime;
//클래스 상속
public class GameManager : MonoBehaviourPunCallbacks
{
//포톤 게임 버전을 설정하기 위한 변수, 같은 게임 버전끼리 공유가 된다.이 클라이언트의 버전 번호입니다. 사용자는 gameVersion으로 서로 구분됩니다(이를 통해 획기적인 변경이 가능함).
private readonly string version = "1.0";
private string userId = "syyeom1002";
private void Awake()
{
//마스터 client와 일반 client의 레벨을 동기화 할지 결정한다. true일 시, 마스터 client에서 레벨 변경 시 모든 client들이 자동으로 동일한 레벨을 로드한다.
PhotonNetwork.AutomaticallySyncScene = true;
PhotonNetwork.GameVersion = this.version;
PhotonNetwork.NickName = this.userId;
Debug.Log(PhotonNetwork.NickName);
//Photon Cloud에 연결 되는 시작 지점
PhotonNetwork.ConnectUsingSettings();
}
public override void OnConnectedToMaster()
{
Debug.Log("마스터 서버에 접속");
Debug.LogFormat("PhotonNetwork.InLobby: {0}", PhotonNetwork.InLobby);
PhotonNetwork.JoinLobby();
}
public override void OnJoinedLobby()
{
Debug.Log("로비 접속");
Debug.LogFormat("PhotonNetwork.InLobby: {0}", PhotonNetwork.InLobby);
//만들어져있는 임의 룸에 입장을 시도, 룸이 없다면 Failed
PhotonNetwork.JoinRandomRoom();
}
public override void OnJoinRandomFailed(short returnCode, string message)
{
Debug.LogFormat("{0}, {1}", returnCode, message);
this.CreateRoom("TestRoom123");
}
private void CreateRoom(string roomName)
{
//기본형 : PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = maxPlayersPerRoom });
RoomOptions options = new RoomOptions();
options.MaxPlayers = 20;
options.IsOpen = true;
options.IsVisible = true;
PhotonNetwork.CreateRoom(roomName, options);
}
public override void OnCreatedRoom()
{
Debug.Log("룸 생성완료");
Debug.LogFormat("PhotonNetwork.CurrentRoom.Name : {0}", PhotonNetwork.CurrentRoom.Name);
}
public override void OnCreateRoomFailed(short returnCode, string message)
{
Debug.LogFormat("{0}, {1}", returnCode, message);
}
}
● RoomOptions 사용하려면 using Photon.Realtime; 네임스페이스를 선언해줘야한다.
룸 생성이 정상적으로 된 모습
2. 로비 접속 -> 랜덤 룸 입장 -> 실패 -> 룸 생성 -> 룸 접속
이제 룸이 생성되면 자동으로 룸에 입장하도록 하자
OnJoinedRoom 콜백 함수가 호출
public override void OnJoinedRoom()
{
Debug.Log("룸 입장");
Debug.LogFormat("PhotonNetwork.CurrentRoom.PlayerCount: {0}", PhotonNetwork.CurrentRoom.PlayerCount);
}
위 코드를 추가해주고 실행해주면
룸 입장과 룸에 있는 플레이어 수가 잘 출력되는 모습
3. 빌드해보자
빌드해서 PlayerCount가 2가 되는지 확인해보자
Player Setting ->Fullscreen Mode Windowed로 변경
Build라는 폴더 생성 여기에 빌드
exe 파일 실행 + 유니티도 실행
2로 잘 나오는 모습 !!!!!!
참고로 exe파일에는 로그가 안떠서 확인할 수 없기 때문에
exe파일 먼저 실행하고 그 다음에 유니티를 실행하기 바란다.
※ GetRegions failed. AppId is unknown on the cloud server 오류
코드가 바뀐게 없는데 갑자기 이런 오류가 났다.
gpt한테 물어보니까
Photon App ID 설정 확인:
- Photon 웹사이트에 로그인하여 프로젝트의 App ID를 복사한 후 Unity에서 PhotonServerSettings에 올바르게 입력했는지 확인하세요.
이렇게 말하길래
PhotonServerSettings에서의 appid와 포톤 웹사이트에서 생성했던 appid가 서로 달라져있었다.. 언제 잘못 건드렸나 싶은데
암은 홈페이지 appid를 다시 PhotonServerSettings의 appid에 붙여넣으니까 다시 제대로 동작한다ㅡㅡ.