Unity | Pun2

Clean·2025년 7월 11일

Unity

목록 보기
18/24

오늘 한 것

  • Photon 연결

  • ParrelSync로 클라이언트 테스트

  • Custom Property


Photon 설치 및 연결

클라이언트는 서버의 호출을 받기 위해 using Photon.Pun; 을 추가하고

컴포넌트 상속을 MonoBehaviour > MonoBehaviourPunCallbacks 로 변경해야 한다.

그리고 MonoBehaviourPunCallbacks 로 여러 네트워크 콜백 함수를 사용하여 타이밍 및 동기화를 할 수 있다.

  • 서버 연결
    PhotonNetwork.ConnectUsingSettings();
  • 연결 상태 확인
    public override void OnConnected();
    public override void OnConnectedToMaster();
    public override void OnDisconnected(DisconnectCause cause);
    • DisconnectCause는 열거형으로 연결되지 않는 이유를 알 수 있다.

그 외 Room 생성 및 입장 퇴장, 로비 입장 및 퇴장, 다른 유저 입장, 방장 변경 등

다양한 콜백 함수들이 있다.


ParrelSync로 클라이언트 테스트

ParrelSync 깃허브 링크를 유니티 에디터 패키지 매니저에서 설치할 수 있다.

ParrelSync는 MSW처럼 클라이언트를 추가할 수 있어서 네트워크(멀티)를 테스트할 수 있다.


Custom Property

커스텀 프로퍼티는 ExitGames.Client.Photon.Hashtable 타입의 Dictionary로

key는 string 타입, Value는 object 타입으로 룸, 플레이어의 동기화될 데이터를 저장할 수 있다.


Room 프로퍼티

  • 룸안에서 적용되는 데이터
  • 소유권이 없어서 코드로 제한을 둬야함
  • ex) 맵 이름, 게임 모드, 방 설정 등

Player 프로퍼티

  • 플레이어 각각 적용되는 데이터
  • 로컬 플레이어가 소유권을 가짐
  • ex) 준비 상태, 선택한 캐릭터 등

Lobby 프로퍼티

// 방 설정
RoomOptions options = new();
options.MaxPlayers = 4;

// 로비에서 공유할 옵션
options.CustomRoomPropertiesForLobby = new[] { "Map" }; 

// 룸 프로퍼티 추가
Hashtable roomSetting = new();
roomSetting["Map"] = "City";

options.CustomRoomProperties = roomSetting;

추가로 string[] 타입의 CustomRoomPropertiesForLobby도 있는데,

룸에서 로비로 보여줄 룸의 정보(Room 프로퍼티)를 지정하는 배열이다.

룸을 만들 때 설정한 Room 프로퍼티에서 Key 값만 추가할 수 있다.


VR때와 같이 에셋을 공부하는 느낌이고 정보가 많아 머리에 잘 안들어오지만

MSW에서 서버와 클라이언트에 익숙해서 그런가

아직까지 어렵다기 보다는 내용이 많은 느낌이다.

0개의 댓글