네트워크 게임에 참여하려면 맨 먼저 포톤 서버에 접속해야한다. 포톤서버는 로비와 룸의 개념이 존재한다.
함수를 통해 로비에 입장하면 룸들의 리스트를 얻을수 있고 특정 룸을 선택해 입장해서 그 방에 있는 유저들과 게임을 함께 할 수 있다.
포톤 서버에 접속해 룸을 생성하는 절차를 처리할 스크립트를 만들어 보자. 하이라키뷰에 빈게임오브젝트를 만들고 이름을 PhotonManager라고 한다. 동일 이름으로 스크립트를 만들고 연결한다.
포톤 API를 사용하기 위한 네임스페이스를 선언해야한다
using Photon.Pun; //포톤 API를 위한 네임스페이스
using Photon.Realtime; //포톤 API를 위한 네임스페이스
PhotonManager 스크립트는 포톤의 다양한 기능을 사용하기 위해 MonoBehaviourPunCallbacks Class를 베이스 클래스로 변경한다.
public class PhotonManager : MonoBehaviourPunCallbacks {
}
Awake() 함수에서 포톤의 기본적 설정을 한후 접속하는 코드이다.
룸을 생성한 유저는 자동으로 입장하고 방장이 된다.
PhotonNetwork.AutomaticallySyncScene = true; // 마스터 클라이언트의 씬 자동 동기화 옵션
동일 버전의 유저끼리만 접속을 허용해준다.
PhotonNetwork.GameVersion = version; // 게임 버전 설정
PhotonNetwork.NickName = userId; //접속 유저의 닉네임 설정
포톤서버와의 초당 통신회수를 정한다 디폴트는 30회이다
Debug.Log(PhotonNetwork.SendRate);// 포톤 서버와의 데이터의 초당 전송 횟수
설정을 마치면 서버에 접속한다.
PhotonNetwork.ConnectUsingSettings(); // 포톤 서버 접속
서버에 접속되면 제일 먼저 OnConnectedToMaster() 콜백함수가 호출된다. 여기서 로비에 입장했는지 체크해보자
Debug.Log($"PhotonNetwork.InLobby = {PhotonNetwork.InLobby}");
포톤은 로비에 자동으로 입장할수 없기 때문에 False가 출력된다. JoinLobby로 입장해보자
PhotonNetwork.JoinLobby();
제대로 입장되었다면 OnJoinedLobby()콜백이 호출된다.
public override void OnJoinedLobby() {
Debug.Log($"PhotonNetwork.InLobby = {PhotonNetwork.InLobby}");
// 수동으로 접속하기 위해 자동 입장은 주석처리
// PhotonNetwork.JoinRandomRoom();
}
using UnityEngine;
using TMPro;
using Photon.Pun; //포톤 API를 위한 네임스페이스
using Photon.Realtime; //포톤 API를 위한 네임스페이스
using System.Collections.Generic;
public class PhotonManager : MonoBehaviourPunCallbacks {
private readonly string version = "1.0"; // 게임의 버전
private string userId = "Zack"; // 유저의 닉네임
void Awake() {
PhotonNetwork.AutomaticallySyncScene = true; // 마스터 클라이언트의 씬 자동 동기화 옵션
PhotonNetwork.GameVersion = version; // 게임 버전 설정
PhotonNetwork.NickName = userId; //접속 유저의 닉네임 설정
// 포톤 서버와의 데이터의 초당 전송 횟수
Debug.Log(PhotonNetwork.SendRate);
PhotonNetwork.ConnectUsingSettings(); // 포톤 서버 접속
}
public override void OnConnectedToMaster() {
Debug.Log("Connected to Master!");
Debug.Log($"PhotonNetwork.InLobby = {PhotonNetwork.InLobby}");
PhotonNetwork.JoinLobby();
}
// 로비에 접속 후 호출되는 콜백 함수
public override void OnJoinedLobby() {
Debug.Log($"PhotonNetwork.InLobby = {PhotonNetwork.InLobby}");
// 수동으로 접속하기 위해 자동 입장은 주석처리
// PhotonNetwork.JoinRandomRoom();
}
}
실행해보면 한국 서버인 kr로 접속되고 Master에 연결된후 InLobby된다.
'유니티게임강좌 > 포톤클라우드 네트워크' 카테고리의 다른 글
[포톤클라우드] 주인공 캐릭터의 네트워크 기능 구현 (0) | 2023.04.03 |
---|---|
[포톤클라우드] JoinRandomRoom와 OnJoinRandomFailed (0) | 2023.03.28 |
[포톤클라우드] 포톤 프로젝트 설정 (0) | 2023.03.28 |
[포톤클라우드] 시네머신을 활용한 카메라 컨트롤 (0) | 2023.03.28 |
[포톤클라우드] 주인공 캐릭터 설정 (0) | 2023.03.28 |