Unity/photon/punとpun2の違い
提供: 初心者エンジニアの簡易メモ
目次
punとpun2の違い
参考:https://lifter-liberty.localinfo.jp/posts/5296583
実際に変更した作業
using
using Photon.Pun; using Photon.Realtime;
を追加
部屋系
pun2には初期でのauto-lobbyのonが無いので、 pun1で、auto-lobbyのチェックしていれば、pun2では、以下が必要。
public override void OnConnectedToMaster() { Debug.Log("OnConnectedToMaster"); if (PhotonNetwork.IsConnected) { PhotonNetwork.JoinLobby(); } }
継承
- Photon.MonoBehaviour → MonoBehaviourPunへ
- Photon.MonoBehaviour → MonoBehaviourPunCallbacksへ(OnRoomListUpdateを使う場合はこちら)
接続系
pun1
PhotonNetwork.ConnectUsingSettings("v1.0");
↓
pun2
if (PhotonNetwork.IsConnected == false) { PhotonNetwork.GameVersion = "v1.0"; PhotonNetwork.ConnectUsingSettings(); }
PhotonNetwork.isMasterClient → PhotonNetwork.IsMasterClient
プレイヤー系
- PhotonNetwork.playerName → PhotonNetwork.NickName
- PhotonNetwork.otherPlayers → PhotonNetwork.PlayerListOthers
- p.name → p.Nickname
- PhotonNetwork.countOfPlayers → PhotonNetwork.CountOfPlayers
- PhotonNetwork.playerList → PhotonNetwork.PlayerList
- public void OnPhotonPlayerConnected(PhotonPlayer) → public override void OnPlayerEnteredRoom(Player)
- public void OnPhotonPlayerDisconnected(PhotonPlayer) → public override void OnPlayerLeftRoom(Player)
- PhotonNetwork.offlineMode → PhotonNetwork.OfflineMode
部屋系
- roomOptions.customRoomProperties → roomOptions.CustomRoomProperties
- roomOptions.customRoomPropertiesForLobby → roomOptions.CustomRoomPropertiesForLobby
- roomOptions.maxPlayers → roomOptions.MaxPlayers
- roomOptions.isOpen → roomOptions.IsOpen
- roomOptions.isVisible → roomOptions.IsVisible
- room.name → room.Name
部屋プロパティ
- room.name → room.Name
- room.customProperties → room.CustomProperties
- PhotonNetwork.room → PhotonNetwork.CurrentRoom
部屋一覧
pun1
void OnReceivedRoomListUpdate() { RoomInfo[] rooms = PhotonNetwork.GetRoomList(); // 注意:OnReceivedRoomListUpdate()が呼ばれた以後でしか取得できない if (rooms.Length == 0) { Debug.Log("ルームが一つもありません"); } else { foreach (RoomInfo room in rooms) { Debug.Log("RoomName:" + room.name); Debug.Log("userId:" + room.customProperties["userId"]); } } }
↓
pun2
using System.Linq; public override void OnRoomListUpdate(List<RoomInfo> roomList) { Debug.Log("OnRoomListUpdate"); List<RoomInfo> tmpRoomList = roomList.Where(s => s.IsOpen).ToList(); if (tmpRoomList.Count == 0) { Debug.Log("ルームが一つもありません"); } else { foreach (RoomInfo room in tmpRoomList) { Debug.Log("RoomName:" + room.Name); Debug.Log("userId:" + room.CustomProperties["userId"]); } } }
OnRoomListUpdateでエラーが出る場合は、以下置換。
MonoBehaviourPun → MonoBehaviourPunCallbacks
PhotonViewエラー
PhotonViewのあるところに以下追加
using Photon.Pun;
RPC系
PhotonTargets.All → RpcTarget.All
コールバック
- void OnJoinedLobby() → public override void OnJoinedLobby()
- void OnJoinedRoom() → public override void OnJoinedRoom()
- void OnPhotonRandomJoinFailed() → public override void OnJoinRandomFailed(short returnCode, string message)
pun1
void OnPhotonJoinRoomFailed(object[]) { Debug.Log("PhotonManager OnPhotonJoinRoomFailed " + codeAndMsg[0] + " " + codeAndMsg[1]);
↓
pun2
public override void OnJoinRoomFailed(short returnCode, string message) { Debug.Log("PhotonManager OnJoinRoomFailed " + returnCode + " " + message);
chatのエラー
error CS1061: 'ServerSettings' does not contain a definition for 'ChatAppID' and no accessible extension method 'ChatAppID' accepting a first argument of type 'ServerSettings' could be found (are you missing a using directive or an assembly reference?)
ChatAppIDが設定に入ってないので、入れる。
PhotonNetwork.PhotonServerSettings.ChatAppID → PhotonNetwork.PhotonServerSettings.AppSettings.AppIdChat
GetRegions failedが起こった場合
以下エラーが起こったとき
GetRegions failed. AppId is unknown on the (cloud) server. ApplicationNotFound
AppIdが正しくないので、もう一度コピペする
LeaveRoomはIsConnectで囲む
PhotonNetwork.LeaveRoom();
↓
if (PhotonNetwork.IsConnected) { PhotonNetwork.LeaveRoom(); }
参考
https://doc.photonengine.com/ja-jp/pun/current/getting-started/initial-setup
https://doc.photonengine.com/ja-jp/pun/current/getting-started/migration-notes