This document is about: PUN 2
SWITCH TO

PUN Classic (v1), PUN 2, Bolt는 휴업 모드입니다. Unity2022에 대해서는 PUN 2에서 서포트하지만, 신기능의 추가는 없습니다. 현재 이용중인 고객님의 PUN 및 Bolt 프로젝트는 중단되지 않고, 퍼포먼스나 성능이 떨어지는 일도 없습니다. 앞으로의 새로운 프로젝트에는 Photon Fusion 또는 Quantum을 사용해 주십시오.

마이그레이션 노트

PUN 2는 많은 변경 사항과 업데이트를 하나의 패키지에 종합했지만 전체 사용량은 아시다시피 PUN과 비슷합니다. 이 패키지는 PUN 1.x와 별도의 패키지이므로 업데이트할 시기를 선택할 수 있습니다. 또한 언제든지 이전으로 돌아갈 수 있습니다.

PUN 플러스(v1.x)를 사용중이고 PUN 2로 업데이트를 하고 싶으면, PUN 2 무료 패키지로 기존의 AppId를 사용하십시오! 모든 혜택이 이관됩니다.

업데이트하려면 PUN을 완전히 제거하고 PUN 2를 새로 설치하여 필요한 API 및 로직을 변경하는 것이 가장 좋습니다. 아래에서 가장 큰 변경 사항을 찾을 수 있지만 목록이 완전한 것은 아닙니다.

개요

  • PUN 2에는 이제 덜 유니티적인 실시간 API가 포함되어 있으며 사용할 수 있습니다.
  • 두 개의 레이어에 대해 두 개의 구별되는 네임스페이스가 있습니다: Photon.Pun 그리고 Photon.Realtime.
  • 최고 지역 선택과 콜백용 시스템은 이제 Realtime API에서 수행됩니다.
  • 수 많은 콜백, 메소드와 필드들이 다양한 사유에 의해 이름이 변경되었습니다.
  • 콜백의 경우 클래스는 인터페이스를 구현하고 관심 있는 것으로 등록해야 합니다.
  • MonoBehaviourPunCallbacks는 대부분의 콜백을 구현하므로 상속해서 오버라이드 할 수 있습니다.

API 변경사항

  • PhotonNetwork.ConnectUsingSettings() 호출 전에 PhotonNetwork.GameVersion 설정하거나 또는 간단하게 PhotonServerSettings를 사용하십시오.
  • PhotonNetwork.autoJoinLobby 은 없어졌습니다. 로비가 필요한 경우를 제외하고 조인하지 마십시오.
  • PhotonNetwork.GetRoomList() 는 없어졌습니다. ILobbyCallbacks.OnRoomListUpdate(List<RoomInfo> roomList) 콜백에서 룸 목록을 얻고 선택적으로 캐시합니다.
  • PhotonNetwork.FriendsList 는 없어졌습니다. IMatchmakingCallbacks.OnFriendListUpdate(List<FriendInfo> friendList) 콜백에서 친구 목록을 얻을 수 있고 선택적으로 캐시합니다.
  • PhotonNetwork.connecting 은 없어졌습니다.
  • PhotonNetwork.connectionState 는 없어졌습니다.
  • PhotonNetwork.isNonMasterClientInRoom 은 없어졌습니다.
  • PhotonNetwork.autoCleanUpPlayerObjects 는 없어졌습니다. 이 설정은 룸별이므로, 이제는 RoomOptions에 있습니다. 예: PhotonNetwork.CreateRoom(null, new RoomOptions() { CleanupCacheOnLeave = true });.
  • PhotonNetwork.networkingPeer 는 없어졌습니다. 여기서 다루는 작업은 PhotonNetwork 클래스나 PhotonNetwork에서 직접 처리되거나 PhotonNetwork.NetworkingClient에서 처리됩니다.

Namespace 변경사항

  • RoomOptions 은 이제 Photon.Realtime 네임스페이스에 있습니다
  • AuthenticationValues 은 이제 Photon.Realtime 네임스페이스에 있습니다
  • IPunObservable 은 이제 Photon.Pun 네임스페이스에 있습니다

이름 변경

camelCase에서 PascalCase로

공용 필드들과 속성:

  • photonView.isMine 는 이제 photonView.IsMine 입니다.
  • photonView.owner 는 이제 photonView.Owner 입니다.
  • PhotonNetwork.automaticallySyncScene 은 이제 PhotonNetwork.AutomaticallySyncScene 입니다.
  • PhotonNetwork.masterClient 는 이제 PhotonNetwork.MasterClient 입니다.
  • PhotonNetwork.isMasterClient 는 이제 PhotonNetwork.IsMasterClient 입니다.
  • PhotonNetwork.inRoom 은 이제 PhotonNetwork.InRoom 입니다.
  • PhotonNetwork.isMessageQueueRunning 은 이제 PhotonNetwork.IsMessageQueueRunning 입니다.
  • PhotonNetwork.offlineMode 는 이제 PhotonNetwork.OfflineMode 입니다.
  • PhotonNetwork.countOfPlayersOnMaster 는 이제 PhotonNetwork.CountOfPlayersOnMaster 입니다.
  • PhotonNetwork.countOfPlayersInRooms 은 이제 PhotonNetwork.CountOfPlayersInRooms 입니다.
  • PhotonNetwork.countOfPlayers 는 이제 PhotonNetwork.CountOfPlayers 입니다.
  • PhotonNetwork.countOfRooms 은 이제 PhotonNetwork.CountOfRooms 입니다.
  • PhotonNetwork.sendRate 는 이제 PhotonNetwork.SendRate 입니다.
  • PhotonNetwork.time 은 이제 PhotonNetwork.Time 입니다.
  • PhotonNetwork.playerList 는 이제 PhotonNetwork.PlayerList 입니다.
  • PhotonNetwork.precisionForVectorSynchronization 은 이제 PhotonNetwork.PrecisionForVectorSynchronization 입니다.
  • PhotonNetwork.precisionForQuaternionSynchronization 은 이제 PhotonNetwork.PrecisionForQuaternionSynchronization 입니다.
  • PhotonNetwork.precisionForFloatSynchronization 은 이제 PhotonNetwork.PrecisionForFloatSynchronization 입니다.
  • PhotonStream.isWriting 은 이제 PhotonStream.IsWriting 입니다.
  • PhotonStream.isReading 은 이제 PhotonStream.IsReading 입니다.
  • RoomOptions.cleanUpCacheOnLeave 는 이제 RoomOptions.CleanupCacheOnLeave 입니다.
  • RoomOptions.publishUserId 는 이제 RoomOptions.PublishUserId 입니다.
  • RoomOptions.suppressRoomEvents 는 이제 RoomOptions.SuppressRoomEvents 입니다.

기타

  • PhotonNetwork.connected 는 이제 PhotonNetwork.IsConnected 입니다.
  • PhotonNetwork.connectedAndReady 는 이제 PhotonNetwork.IsConnectedAndReady 입니다.
  • PhotonNetwork.networkingPeer 는 이제 PhotonNetwork.NetworkingClient 입니다.
  • PhotonNetwork.connectionStateDetailed 는 이제 PhotonNetwork.NetworkClientState 입니다.
  • PhotonNetwork.playerName 은 이제 PhotonNetwork.NickName 입니다.
  • PhotonNetwork.room 은 이제 PhotonNetwork.CurrentRoom 입니다.
  • PhotonNetwork.lobby 는 이제 PhotonNetwork.CurrentLobby 입니다.
  • PhotonNetwork.player 는 이제 PhotonNetwork.LocalPlayer 입니다.
  • PhotonNetwork.insideLobby 는 이제 PhotonNetwork.InLobby 입니다.
  • PhotonNetwork.otherPlayers 는 이제 PhotonNetwork.PlayerListOthers 입니다.
  • PhotonNetwork.sendRateOnSerialize 는 이제 PhotonNetwork.SerializationRate 입니다.
  • PhotonTargets enum 은 이제 RpcTarget 입니다.
  • PhotonPlayer class 는 이제 Photon.Realtime.Player 입니다.
  • PhotonPlayer.ID 는 이제 Photon.Realtime.Player.ActorNumber 입니다.

콜백 변경사항

새로운 콜백에 대해서는 이 페이지에서 더 읽을 수 있습니다.

  • IPunInstantiateMagicCallback 을 제외한 모든 콜백 인터페이스들은 등록되고 등록해제 되어야 합니다. PhotonNetwork.AddCallbackTarget(this)PhotonNetwork.RemoveCallbackTarget(this) 을 호출합니다(각각 OnEnable()OnDisable() 내부에서)

  • Photon.PunBehaviourMonoBehaviourPunCallbacks 로 교체되었습니다 MonoBehaviourPunCallbacks OnEnabled() 그리고 OnDisable()을 오버라이드 한 경우에 베이스 클래스 메소드를 항상 호출 하십시오.

In the table below, method parameters are shown only when method signatures are different between PUN1 and PUN2.
PUN 1 (Callback) PUN 2 (Interface | Callback)
OnConnectedToPhoton IConnectionCallbacks OnConnected
OnFailedToConnectToPhoton() IConnectionCallbacks OnDisconnected(DisconnectCause)
OnConnectionFail() IConnectionCallbacks OnDisconnected(DisconnectCause)
OnDisconnectedFromPhoton() IConnectionCallbacks OnDisconnected(DisconnectCause)
OnConnectedToMaster IConnectionCallbacks OnConnectedToMaster
OnPhotonMaxCccuReached() IConnectionCallbacks OnDisconnected(DisconnectCause)
OnCustomAuthenticationFailed IConnectionCallbacks OnCustomAuthenticationFailed
OnCustomAuthenticationResponse IConnectionCallbacks OnCustomAuthenticationResponse
OnMasterClientSwitched(PhotonPlayer) IInRoomCallbacks OnMasterClientSwitched(Player)
OnPhotonPlayerConnected(PhotonPlayer) IInRoomCallbacks OnPlayerEnteredRoom(Player)
OnPhotonPlayerDisconnected(PhotonPlayer) IInRoomCallbacks OnPlayerLeftRoom(Player)
OnPhotonPlayerActivityChanged(PhotonPlayer) IInRoomCallbacks OnPlayerEnteredRoom(Player)
OnPlayerLeftRoom(Player)
OnPhotonCustomRoomPropertiesChanged IInRoomCallbacks OnRoomPropertiesUpdate
OnPhotonPlayerPropertiesChanged(object[]) IInRoomCallbacks OnPlayerPropertiesUpdate(Player, Hashtable)
OnJoinedLobby ILobbyCallbacks OnJoinedLobby
OnLeftLobby ILobbyCallbacks OnLeftLobby
OnReceivedRoomListUpdate() ILobbyCallbacks OnRoomListUpdate(List<RoomInfo>)
OnLobbyStatisticsUpdate() ILobbyCallbacks OnLobbyStatisticsUpdate(List<TypedLobbyInfo>)
OnLeftRoom IMatchmakingCallbacks OnLeftRoom
OnPhotonCreateRoomFailed(object[]) IMatchmakingCallbacks OnCreateRoomFailed(short, string)
OnPhotonJoinRoomFailed(object[]) IMatchmakingCallbacks OnJoinRoomFailed(short, string)
OnCreatedRoom IMatchmakingCallbacks OnCreatedRoom
OnJoinedRoom IMatchmakingCallbacks OnJoinedRoom
OnPhotonRandomJoinFailed(object[]) IMatchmakingCallbacks OnJoinRandomFailed(short, string)
OnUpdatedFriendList() IMatchmakingCallbacks OnFriendListUpdate(List<FriendInfo>)
- IOnEventCallbackOnEvent(EventData)
OnPhotonInstantiate IPunInstantiateMagicCallback OnPhotonInstantiate
OnPhotonSerializeView IPunObservable OnPhotonSerializeView
OnOwnershipRequest(object[]) IPunOwnershipCallbacks OnOwnershipRequest(PhotonView, Player)
OnOwnershipTransfered(object[]) IPunOwnershipCallbacks OnOwnershipTransfered(PhotonView, Player)
OnWebRpcResponse IWebRpcCallback OnWebRpcResponse
Back to top