PUN 2 is in maintenance / LTS mode. Aside from some fixes no further feature updates are planned. Of course, existing PUN 2 projects will continue to run. New projects should consider Fusion or 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입니다.PhotonTargetsenum 은 이제RpcTarget입니다.PhotonPlayerclass 는 이제Photon.Realtime.Player입니다.PhotonPlayer.ID는 이제Photon.Realtime.Player.ActorNumber입니다.
콜백 변경사항
새로운 콜백에 대해서는 이 페이지에서 더 읽을 수 있습니다.
IPunInstantiateMagicCallback을 제외한 모든 콜백 인터페이스들은 등록되고 등록해제 되어야 합니다.
PhotonNetwork.AddCallbackTarget(this)과PhotonNetwork.RemoveCallbackTarget(this)을 호출합니다(각각OnEnable()과OnDisable()내부에서)Photon.PunBehaviour이MonoBehaviourPunCallbacks로 교체되었습니다
MonoBehaviourPunCallbacksOnEnabled()그리고OnDisable()을 오버라이드 한 경우에 베이스 클래스 메소드를 항상 호출 하십시오.
아래 표에서는 메서드 시그니처가 PUN1과 PUN2에서 다를 경우에만 매개변수가 표시됩니다.
| PUN 1 (콜백) | PUN 2 (인터페이스 | 콜백) | |
|---|---|---|
| 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>) |
| - | IOnEventCallback | OnEvent(EventData) |
| OnPhotonInstantiate | IPunInstantiateMagicCallback | OnPhotonInstantiate |
| OnPhotonSerializeView | IPunObservable | OnPhotonSerializeView |
| OnOwnershipRequest(object[]) | IPunOwnershipCallbacks | OnOwnershipRequest(PhotonView, Player) |
| OnOwnershipTransfered(object[]) | IPunOwnershipCallbacks | OnOwnershipTransfered(PhotonView, Player) |
| OnWebRpcResponse | IWebRpcCallback | OnWebRpcResponse |