「Unity/photon/punとpun2の違い」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→GetRegions failedが起こった場合) |
細 (Admin がページ「Unity/photon/photon2違い」を「Unity/photon/punとpun2の違い」に、リダイレクトを残さずに移動しました) |
||
(同じ利用者による、間の5版が非表示) | |||
行1: | 行1: | ||
− | == | + | ==punとpun2の違い== |
参考:https://lifter-liberty.localinfo.jp/posts/5296583 | 参考:https://lifter-liberty.localinfo.jp/posts/5296583 | ||
行10: | 行10: | ||
</pre> | </pre> | ||
を追加 | を追加 | ||
+ | ===部屋系=== | ||
+ | pun2には初期でのauto-lobbyのonが無いので、 | ||
+ | pun1で、auto-lobbyのチェックしていれば、pun2では、以下が必要。 | ||
+ | |||
+ | <pre> | ||
+ | public override void OnConnectedToMaster() | ||
+ | { | ||
+ | Debug.Log("OnConnectedToMaster"); | ||
+ | if (PhotonNetwork.IsConnected) | ||
+ | { | ||
+ | PhotonNetwork.JoinLobby(); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
===継承=== | ===継承=== | ||
行40: | 行54: | ||
* public void OnPhotonPlayerDisconnected(PhotonPlayer) → public override void OnPlayerLeftRoom(Player) | * public void OnPhotonPlayerDisconnected(PhotonPlayer) → public override void OnPlayerLeftRoom(Player) | ||
* PhotonNetwork.offlineMode → PhotonNetwork.OfflineMode | * PhotonNetwork.offlineMode → PhotonNetwork.OfflineMode | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===部屋系=== | ===部屋系=== |
2022年12月28日 (水) 16:18時点における最新版
目次
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