PUN Classic (v1), PUN 2 and Bolt are in maintenance mode. PUN 2 will support Unity 2019 to 2022, but no new features will be added. Of course all your PUN & Bolt projects will continue to work and run with the known performance in the future.
For any upcoming or new projects: please switch to Photon 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
입니다.PhotonTargets
enum 은 이제RpcTarget
입니다.PhotonPlayer
class 는 이제Photon.Realtime.Player
입니다.PhotonPlayer.ID
는 이제Photon.Realtime.Player.ActorNumber
입니다.
콜백 변경사항
새로운 콜백에 대해서는 이 페이지에서 더 읽을 수 있습니다.
IPunInstantiateMagicCallback
을 제외한 모든 콜백 인터페이스들은 등록되고 등록해제 되어야 합니다.PhotonNetwork.AddCallbackTarget(this)
과PhotonNetwork.RemoveCallbackTarget(this)
을 호출합니다(각각OnEnable()
과OnDisable()
내부에서)Photon.PunBehaviour
이MonoBehaviourPunCallbacks
로 교체되었습니다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>) |
- | IOnEventCallback | OnEvent(EventData) |
OnPhotonInstantiate | IPunInstantiateMagicCallback | OnPhotonInstantiate |
OnPhotonSerializeView | IPunObservable | OnPhotonSerializeView |
OnOwnershipRequest(object[]) | IPunOwnershipCallbacks | OnOwnershipRequest(PhotonView, Player) |
OnOwnershipTransfered(object[]) | IPunOwnershipCallbacks | OnOwnershipTransfered(PhotonView, Player) |
OnWebRpcResponse | IWebRpcCallback | OnWebRpcResponse |