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.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 |