Photon Unity Networking  v1.67
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Properties | List of all members
PhotonNetwork Class Reference

PhotonNetworkプラグインを使うためのメインクラスです。 このクラスは静的クラスです。 More...

Public Member Functions

delegate void EventCallback (byte eventCode, object content, int senderId)
 OnEventCallのデリゲートを使用可能にするかを決めます。 More...
 

Static Public Member Functions

static void SwitchToProtocol (ConnectionProtocol cp)
 オフラインのとき、ネットワークプロトコルを切り替え可能になります(これは使用可能ポートに接続するときに影響します)。 More...
 
static bool ConnectUsingSettings (string gameVersion)
 エディターで設定するためにPhotonと接続します(PhotonServerSettingsファイルに保存します)。 More...
 
static bool ConnectToMaster (string masterServerAddress, int port, string appID, string gameVersion)
 PhotonマスターサーバーにIPアドレス・ポート・appIDとゲーム(クライアント)バージョンで接続します。 More...
 
static bool Reconnect ()
 切断後、マスタサーバーに再接続するために使用することができます。 More...
 
static bool ReconnectAndRejoin ()
 クライアントがゲームプレイ中に接続を失った場合、このメソッドは再接続してルームへの再入室を試みます。 More...
 
static bool ConnectToBestCloudServer (string gameVersion)
 (Unityのpingをサポートするプラットフォーム上で)pingが最も低い地域のPhoton Cloudに接続します。 More...
 
static bool ConnectToRegion (CloudRegionCode region, string gameVersion)
 選択したPhoton Cloudの地域に接続します。 More...
 
static void OverrideBestCloudServer (CloudRegionCode region)
 ConnectToBestCloudServer(string gameVersion)で使われている地域を上書きします。 More...
 
static void RefreshCloudServerRating ()
 クラウドサーバーすべてに再pingして、(現在)ping値が最もよいものを探します。 More...
 
static void NetworkStatisticsReset ()
 通信量統計をリセットして、再有効化します。 More...
 
static string NetworkStatisticsToString ()
 NetworkStatisticsEnabledがいくつかの統計をまとめるのに使われたときのみ、使用できます。 More...
 
static void InitializeSecurity ()
 Unity Networkingとの互換性のためだけに使われます。暗号化については接続時に自動で初期化されます。 More...
 
static void Disconnect ()
 このクライアントをPhotonサーバーと、Roomに残るプロセスから回線切断します。そしてOnDisconnectedFromPhotonを完了時に呼びます。 More...
 
static bool FindFriends (string[] friendsToFind)
 フレンド一覧のRoomとオンライン状況をリクエストします。そして結果をPhotonNetwork.Friendsに格納します。 More...
 
static bool CreateRoom (string roomName)
 指定した名前でRoomを作成します。その名前のRoomがすでにあるときは失敗します。 More...
 
static bool CreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby)
  ルームを作成しますが、ルームがすでに存在している場合は失敗します。マスタサーバでのみ呼び出すことができます。 More...
 
static bool CreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers)
 指定した名前でRoomを作成します。その名前のRoomがすでにあるときは失敗します。マスターサーバーだけから呼ぶことができます。 More...
 
static bool JoinRoom (string roomName)
 roomnameでルームに参加して、成功時に​​OnJoinedRoom()を呼び出します。これは、ロビーには影響されません。 More...
 
static bool JoinRoom (string roomName, string[] expectedUsers)
 roomnameでルームに参加して、成功時に​​OnJoinedRoom()を呼び出します。これは、ロビーには影響されません。 More...
 
static bool JoinOrCreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby)
 名前付きのRoomに入室するか、その場でRoom作成するかします。誰かがすでにRoomを作ったかどうかは知らなくてもかまいません。 More...
 
static bool JoinOrCreateRoom (string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers)
 名前を付けられたルームに参加するか、その場で作成することができます。誰かがすでにルームを作成したかどうかを知る必要はありません。 More...
 
static bool JoinRandomRoom ()
 現在使われているロビーの、有効なRoomのどれかに入室します。有効なRoomがなければ失敗します。 More...
 
static bool JoinRandomRoom (Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers)
 独自プロパティのマッチした、空いているRoomに入室しようとします。現在有効なRoomがない場失敗します。 More...
 
static bool JoinRandomRoom (Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers, MatchmakingMode matchingType, TypedLobby typedLobby, string sqlLobbyFilter, string[] expectedUsers=null)
 独自プロパティのマッチした、空いているRoomに入室しようとします。現在有効なRoomがない場合失敗します。 More...
 
static bool ReJoinRoom (string roomName)
 切断後にルームに戻り、再接続するために使用することができます。 More...
 
static bool JoinLobby ()
 マスターサーバー上で、デフォルトロビーに入ります。そのロビーでは、現在使用中のRoom一覧をみることができます。 More...
 
static bool JoinLobby (TypedLobby typedLobby)
 マスターサーバー上でロビーに入って、有効なRoomの一覧を得ることができます。 More...
 
static bool LeaveLobby ()
 ロビーから出ます。有効なRoomについて更新を受け取るのを停止します。 More...
 
static bool LeaveRoom ()
 現在のRoomを退室して、マスターサーバーに戻ります。マスターサーバーではRoomに入室したりRoom作成できます。remarksをご覧ください。 More...
 
static RoomInfo[] GetRoomList ()
 現在把握されているRoomをRoomInfo配列で取得します。ロビーにいるとき利用できて更新されます(insideLobbyをチェックしてください)。 More...
 
static void SetPlayerCustomProperties (Hashtable customProperties)
 この(ローカル)プレイヤーのプロパティをセットして、他のプレイヤーにも同期します(直接編集しないでください)。 More...
 
static void RemovePlayerCustomProperties (string[] customPropertiesToDelete)
 「この」プレイヤーの独自プロパティをローカルで削除します。重要:この変更は同期されません! この挙動はRoomを切り替えるとき便利です。 More...
 
static bool RaiseEvent (byte eventCode, object eventContent, bool sendReliable, RaiseEventOptions options)
 Room内の、一からカスタマイズ可能なイベントを送信します。イベントは少なくともEventCode (0..199)と内容で構成されています。 More...
 
static int AllocateViewID ()
 現在/ローカルのプレイヤーに妥当なviewIDを割り当てます。 More...
 
static int AllocateSceneViewID ()
 Master Clientに対して、シーンオブジェクトに妥当なviewIDを割り当てさせることができます。 More...
 
static void UnAllocateViewID (int viewID)
 (手動でインスタンス作成されて破棄されたネットワーク上のオブジェクトの)viewIDの割り当てを解除します。 More...
 
static GameObject Instantiate (string prefabName, Vector3 position, Quaternion rotation, int group)
 ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。 More...
 
static GameObject Instantiate (string prefabName, Vector3 position, Quaternion rotation, int group, object[] data)
 ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。 More...
 
static GameObject InstantiateSceneObject (string prefabName, Vector3 position, Quaternion rotation, int group, object[] data)
 ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。 More...
 
static int GetPing ()
 現在の、Photonサーバーへの往復にかかる時間。 More...
 
static void FetchServerTimestamp ()
 サーバータイムスタンプを更新します(非同期動作で、サーバーを往復します) More...
 
static void SendOutgoingCommands ()
 即座にRPCを送信しInstantiate(インスタンス作成)を呼び出すのに使われます。それらは他のプレイヤーに向かいます。 More...
 
static bool CloseConnection (PhotonPlayer kickPlayer)
 クライアントに回線切断(KICK)をリクエストします。Master Clientのみが実行可能です。 More...
 
static bool SetMasterClient (PhotonPlayer masterClientPlayer)
 サーバーに依頼して、別のプレイヤーを現在のRoomのMaster Clientに割り当ててもらいます。 More...
 
static void Destroy (PhotonView targetView)
 PhotonViewが静的でないか、このクライアントの制御下ならば、GameObjectとそれに関連したPhotonViewをネットワーク上から破棄します。 More...
 
static void Destroy (GameObject targetGo)
 PhotonViewが静的でないか、このクライアントの制御下ならば、GameObjectとそれに関連したPhotonViewをネットワーク上から破棄します。 More...
 
static void DestroyPlayerObjects (PhotonPlayer targetPlayer)
 ターゲットプレイヤーのGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。これを呼べるのは、ローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)です。 More...
 
static void DestroyPlayerObjects (int targetPlayerId)
 (IDで指定した)プレイヤーのGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。これを呼べるのは、ローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)です。 More...
 
static void DestroyAll ()
 Room内のGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。サーバーにバッファリングされたすべてを削除します。これを呼べるのは、Master Client(全員にむけて)だけです。 More...
 
static void RemoveRPCs (PhotonPlayer targetPlayer)
 ターゲットプレイヤーに送信され、サーバーでバッファリングされたRPCを、すべてネットワーク上から破棄します。これを呼べるのはローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)のみです。 More...
 
static void RemoveRPCs (PhotonView targetPhotonView)
 targetPhotonViewを通して送信される、サーバーでバッファリングされたRPCを、すべて削除します。Master Clientと、targetPhotonViewの所有者が、これを呼ぶことができます。 More...
 
static void RemoveRPCsInGroup (int targetGroup)
 targetGroupに送信される、サーバーでバッファリングされたRPCを、すべて削除します。Master Clientと、targetPhotonViewの所有者が、これを呼ぶことができます。 More...
 
static void CacheSendMonoMessageTargets (Type type)
 既存のtype型のComponentを持つGameObjectをSendMonoMessageTargetsに加えます。 More...
 
static HashSet< GameObject > FindGameObjectsWithComponent (Type type)
 特定の型を持つComponentを伴うGameObjectを検索します(FindObjectsOfTypeを使います)。 More...
 
static void SetReceivingEnabled (int group, bool enabled)
 指定されたグループで受信は可能/不可能か(PhotonViewに適用されます) More...
 
static void SetReceivingEnabled (int[] enableGroups, int[] disableGroups)
 指定されたグループで受信は可能/不可能か(PhotonViewに適用されます) More...
 
static void SetSendingEnabled (int group, bool enabled)
 指定されたグループで送信は可能/不可能か(PhotonViewに適用されます) More...
 
static void SetSendingEnabled (int[] enableGroups, int[] disableGroups)
 指定されたグループで送信は可能/不可能か(PhotonViewに適用されます) More...
 
static void SetLevelPrefix (short prefix)
 後にインスタンス作成されるPhotonViewに、レベルプリフィックスをセットします。1つのPhotonViewに必要なだけならセットしないでください! More...
 
static void LoadLevel (int levelNumber)
 ネットワークのメッセージキューを一時停止するため、レベル読み込みをラップします。オプションで、読み込んだレベルをRoom内で同期します。 More...
 
static void LoadLevel (string levelName)
 ネットワークのメッセージキューを一時停止するため、レベル読み込みをラップします。オプションで、読み込んだレベルをRoom内で同期します。 More...
 
static bool WebRpc (string name, object parameters)
 この操作で、独自Webサービスをname(path)と指定したパラメーターで、Photonに呼び出させることができます。 More...
 

Public Attributes

const string versionPUN = "1.67"
 PUNのバージョン番号。GameVersionの中でも使われて、クライアントのバージョンを相互に分離します。 More...
 

Static Public Attributes

static readonly int MAX_VIEW_IDS = 1000
 プレイヤー毎に(またはシーン毎に)割り当てられるPhotonViewの最大数。 基本説明 のトピック「制限事項」でこの制限を引き起こしている理由をご覧ください More...
 
static ServerSettings PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings))
 シリアライズされたサーバー設定。サーバー設定はセットアップ・ウィザードによって記述され、ConnectUsingSettingsで使われます。 More...
 
static bool InstantiateInRoomOnly = true
 trueなら、Instantiate(インスタンス作成)メソッドを呼ぶと、入室中かをチェックされます。Roomにいないなら失敗します。 More...
 
static PhotonLogLevel logLevel = PhotonLogLevel.ErrorsOnly
 ネットワーク・ログのレベル。PUNが詳細な点までログに出力するかどうかを制御できます。 More...
 
static float precisionForVectorSynchronization = 0.000099f
 Vector2またはVector3(たとえばTransform、Rotation)の最小の差は、変換が必要です。その後でPhotonViewのOnSerialize/ObservingComponentを通して送信されます。 More...
 
static float precisionForQuaternionSynchronization = 1.0f
 PhotonViewのOnSerialize/ObservingComponentを通して送信される前に、Rotationに変換が必要となる、最小の角度。 More...
 
static float precisionForFloatSynchronization = 0.01f
 PhotonViewのOnSerialize/ObservingComponentを通して送信される前の、float数値間の最小の差。 More...
 
static bool UseRpcMonoBehaviourCache
 有効なら、RPCを呼ぶ主体のMonoBehaviourはキャッシュされます。コストのかさむGetComponents<MonoBehaviour>()を呼ぶのを避けるためです。 More...
 
static bool UsePrefabCache = true
 trueなら、インスタンス作成時にPhotonNetwork.PrefabCacheを使い、ゲームオブジェクトをメモリ内に保持します(同じプレハブからのインスタンス作成が改善します)。 More...
 
static Dictionary< string,
GameObject > 
PrefabCache = new Dictionary<string, GameObject>()
 ゲームオブジェクトへの参照を、回数の多いインスタンス作成のために保持します(Resourcesフォルダーから読み込む代わりにメモリから読み込みます)。 More...
 
static HashSet< GameObject > SendMonoMessageTargets
 nullでないなら、これはPUNのSendMonoMessage()に呼ばれるGameObjectの(排他的な)一覧です。 More...
 
static Type SendMonoMessageTargetType = typeof(MonoBehaviour)
 どのクラスがPUNのコールバック実装を含むのかを示します。 More...
 
static bool StartRpcsAsCoroutine = true
 パフォーマンス上の問題になる可能性があるため、コルーチンとしてのRPCの開始を省略するために使用することができます。 More...
 
static int maxConnections
 Unity Networkingだけに使われます。PUNではPhotonNetwork.CreateRoomを使ってプレイヤー数を指定します。 More...
 
static float BackgroundTimeout = 60.0f
 UnityのOnApplicationPause(true)が呼ばれた後の接続を保持するためのフォールバックスレッドをPUNがどのくらいの期間動かすかを定義します。 More...
 
static EventCallback OnEventCall
 RaiseEventを扱うメソッドを“+=”を使って登録します。 More...
 

Properties

static string gameVersion [get, set]
 このビルドのバージョン文字列。非互換のクライアントと分離するために使うことができます。接続中に送信されます。 More...
 
static string ServerAddress [get]
 (マスターかゲームサーバーかを問わず)現在使用されているサーバーアドレス。 More...
 
static bool connected [get]
 Photonに最初に接続するまではfalse。オフラインモードでは、どのサーバーに接続中でもサーバー切り替え中でもtrueです。 More...
 
static bool connecting [get]
 Photonとの下層レベル接続が確立されるまでに、ConnectUsingSettings(または類似メソッド)を呼ぶとtrueです。 More...
 
static bool connectedAndReady [get]
 改善されたconnectedです。入室・退室などの操作を受け付ける準備ができたサーバーに接続しているときのみtrueです。 More...
 
static ConnectionState connectionState [get]
 簡単な接続状態 More...
 
static PeerState connectionStateDetailed [get]
 詳細な接続状態(PUNを関知しません。そのため、サーバー切り替え中は「回線切断」になることがあります)。 More...
 
static ServerConnection Server [get]
 このクライアントが現在接続している、または接続しようとしているサーバー(の型)。 More...
 
static AuthenticationValues AuthValues [get, set]
 Photon(と独自サービス/コミュニティ)のカスタム認証のため、接続中に使われるユーザー認証値。 カスタム認証するのであれば、これを設定したあとでConnectを呼んでください。 More...
 
static Room room [get]
 現在入室しているRoom。どのRoomにも入室していないときはnullです。 More...
 
static PhotonPlayer player [get]
 ローカルのPhotonPlayerです。いつでも使用可能で、このプレイヤーを表します。 CustomPropertiesはRoom入室前でもセット可能で、問題なく同期されます。 More...
 
static PhotonPlayer masterClient [get]
 現在のRoomのMaster Client、または(Roomの外では)nullを返します。 More...
 
static string playerName [get, set]
 プレイヤーのニックネームを、入室したRoom内の全員に同期します。これはPhotonPlayer.nameを設定します。 More...
 
static PhotonPlayer[] playerList [get]
 現在のRoomにいるすべてのプレイヤーリストです。ローカルプレイヤーも含みます。 More...
 
static PhotonPlayer[] otherPlayers [get]
 ローカルプレイヤーを含まない、他のプレイヤーリストです。 More...
 
static List< FriendInfoFriends [get, set]
 フレンドと、そのオンライン状況と、彼らのいるRoomの読み込み専用リスト。FindFriendsコールで初期化されるまではnullです。 More...
 
static int FriendsListAge [get]
 フレンド一覧情報の古さ(ミリ秒)。フレンド一覧を取得する前は0です。 More...
 
static IPunPrefabPool PrefabPool [get, set]
 Object Poolはインスタンス化されたオブジェクトインスタンスを保存して再利用できます。これはUnityデフォルトのInstantiateとDestroyメソッドを置き換えます。 More...
 
static bool offlineMode [get, set]
 オフラインモードによって、あなたのマルチプレイヤーゲームのコードをシングルプレイヤーゲームモードに再利用できるようになります。 trueなら、PhotonNetworkはなにも接続しないので、オーバーヘッドがない状態に近くなります。 最も便利なのは、RPCとPhotonNetwork.Instantiateを再利用できることです。 More...
 
static bool automaticallySyncScene [get, set]
 Room内のクライアントがすべて、(PhotonNetwork.LoadLevelを使っている場合)Master Clientと同じレベルをロードするべきかを決めます。 More...
 
static bool autoCleanUpPlayerObjects [get, set]
 この設定では、退室するプレイヤーにインスタンス作成された、GameObjectとPhotonViewを、Room内のプレイヤーが破棄すべきかを決めます。 More...
 
static bool autoJoinLobby [get, set]
 PhotonServerSettingsアセットで設定されます。マスターサーバーに接続したとき、PhotonNetworkが「ロビー」に参加するべきかを決めます。 More...
 
static bool EnableLobbyStatistics [get, set]
 PhotonServerSettingsアセットで設定されます。マスターサーバーから有効なロビー一覧を取得可能にします。 More...
 
static List< TypedLobbyInfoLobbyStatistics [get]
 trueを設定すると、マスターサーバーから、このアプリケーションで有効なロビーの情報を提供されます。 More...
 
static bool insideLobby [get]
 このクライアントがロビーにいるときtrueです。 More...
 
static TypedLobby lobby [get, set]
 PUNがロビーに入るか、Gameを作成するとき使われるロビー。 More...
 
static int sendRate [get, set]
 PhotonNetworkがパケットを、1秒に何度送信するかを定義します。 これを変更するなら、'sendRateOnSerialize'も変更することを忘れないでください。 More...
 
static int sendRateOnSerialize [get, set]
 OnPhotonSerializeがPhotonViewに、1秒何度呼ばれるかを定義します。 More...
 
static bool isMessageQueueRunning [get, set]
 受信イベント(RPCやインスタンス作成やその他受信するすべて)の配信を一時停止するのに使われます。 More...
 
static int unreliableCommandsLimit [get, set]
 チャンネル毎の未保証コマンドを、配信単位で制限するかどうかに使われます(一時停止後にチャンネルが多いと、未保証コマンドを多く引き起こす可能性があります)。 More...
 
static double time [get]
 Photonのネットワークタイムです。サーバーと同期されます。 More...
 
static int ServerTimestamp [get]
 現在のサーバーのミリ秒単位のタイムスタンプです。 More...
 
static bool isMasterClient [get]
 自分はMaster Clientであるかどうか。 More...
 
static bool inRoom [get]
 Roomにいる(connectionStateDetailed == PeerState.Joined)ときtrueです。 More...
 
static bool isNonMasterClientInRoom [get]
 Room(クライアント)内にいて、しかもそのRoomのMaster Clientではないときtrueです。 More...
 
static int countOfPlayersOnMaster [get]
 現在、Roomで探せるプレイヤー数です(マスターサーバーで5秒間隔で取得可能)。 More...
 
static int countOfPlayersInRooms [get]
 あるRoomで、現在このアプリケーションをプレイしているユーザー数(マスターサーバーで5秒間隔で取得可能)。playerList.Countを使って、Room内のプレイヤー数を取得してください! More...
 
static int countOfPlayers [get]
 現在このアプリケーションをプレイしているユーザー数(マスターサーバーで5秒間隔で取得可能)。 More...
 
static int countOfRooms [get]
 現在使用されているRoom数(マスターサーバーで5秒間隔で取得可能)。 More...
 
static bool NetworkStatisticsEnabled [get, set]
 このクライアントの通信量統計を集計するのを有効にするか無効にするか。 More...
 
static int ResentReliableCommands [get]
 (ACK受信前の、ローカルでの繰り返しタイミングのために)繰り返されたコマンドの数。 More...
 
static bool CrcCheckEnabled [get, set]
 Crcチェックが便利なのは、壊れたデータグラムによる問題を検知して回避できることです。接続していない状態で有効化できます。 More...
 
static int PacketLossByCrcCheck [get]
 CrcCheckEnabledがtrueのとき、正しいCRCチェックサムにならず破棄された着信パケットの数を数えます。 More...
 
static int MaxResendsBeforeDisconnect [get, set]
 ACKを受信できず回線切断の引き金になるより前に、定時性メッセージを再送信できる回数。デフォルトは5。 More...
 
static int QuickResends [get, set]
 ネットワーク上でデータ損失した場合、定時性メッセージが即再送されるのは3回までです。 More...
 

Detailed Description

PhotonNetworkプラグインを使うためのメインクラスです。 このクラスは静的クラスです。

Member Function Documentation

static int PhotonNetwork.AllocateSceneViewID ( )
static

Master Clientに対して、シーンオブジェクトに妥当なviewIDを割り当てさせることができます。

Returns
新規PhotonViewに使われるviewID。またはエラーのときは-1。
static int PhotonNetwork.AllocateViewID ( )
static

現在/ローカルのプレイヤーに妥当なviewIDを割り当てます。

Returns
新規PhotonViewに使われるviewID
static void PhotonNetwork.CacheSendMonoMessageTargets ( Type  type)
static

既存のtype型のComponentを持つGameObjectをSendMonoMessageTargetsに加えます。

Parameters
typenullなら、SendMonoMessageTargetsをコンポーネント型(デフォルトではMonobehaviour)として扱います。
static bool PhotonNetwork.CloseConnection ( PhotonPlayer  kickPlayer)
static

クライアントに回線切断(KICK)をリクエストします。Master Clientのみが実行可能です。

ターゲットプレイヤーだけがこのイベントを受信します。そのプレイヤーは自動的に回線切断され、そのことは他者にも通知されます。

Parameters
kickPlayer回線切断(kick)されるPhotonPlayer。
static bool PhotonNetwork.ConnectToBestCloudServer ( string  gameVersion)
static

(Unityのpingをサポートするプラットフォーム上で)pingが最も低い地域のPhoton Cloudに接続します。

PlayerPrefsにあるクラウドサーバーすべてに対してpingした結果を保存します。これを最初に呼び出したときは2秒前後かかります。 ping結果はPhotonNetwork.OverrideBestCloudServer(..)を上書きすることがあります。 これを最初に使用するとき2秒は掛かるというのは、すべてのクラウドサーバーにpingして最適な地域をチェックしているからです。

PUN Setup Wizardは、appIDを設定ファイルに格納して、サーバーのアドレス/ポートを適用します。 Photon Cloudに接続するには、正しいAppId(Photon Cloud Dashboardに表示されています)を設定ファイルに書き込む必要があります。 https://www.exitgames.com/dashboard

Photon Cloudへの接続が失敗する原因は:

  • 正しくないAppId (OnFailedToConnectToPhoton()を呼びます。正確なAppId値をチェックしてください)
  • ネットワークの問題 (OnFailedToConnectToPhoton()を呼びます)
  • 正しくない地域 (DisconnectCause.InvalidRegionを伴い、OnConnectionFail()を呼びます)
  • サブスクリプションCCU上限に到達 (DisconnectCause.MaxCcuReachedを伴い、OnConnectionFail()を呼びます。OnPhotonMaxCccuReached()も呼びます)

接続制限についてさらに知りたいなら: http://doc.exitgames.com/en/pun

Parameters
gameVersionこのクライアントのバージョン番号。ユーザーはゲームバージョンで個々に分断されます(このおかけで、互換性を壊す変更が可能になります)
Returns
このクライアントがpingをベースにクラウドサーバーに接続しようとするか否か。trueなら接続は保証しませんが、接続を試みることは実行します。
static bool PhotonNetwork.ConnectToMaster ( string  masterServerAddress,
int  port,
string  appID,
string  gameVersion 
)
static

PhotonマスターサーバーにIPアドレス・ポート・appIDとゲーム(クライアント)バージョンで接続します。

Photon Cloudに接続するには、正しいAppId(Photon Cloud Dashboardに表示されています)を設定ファイルに書き込む必要があります。 https://www.exitgames.com/dashboard

Photon Cloudへの接続が失敗する原因は:

  • 正しくないAppId (OnFailedToConnectToPhoton()を呼びます。正確なAppId値をチェックしてください)
  • ネットワークの問題 (OnFailedToConnectToPhoton()を呼びます)
  • 正しくない地域 (DisconnectCause.InvalidRegionを伴い、OnConnectionFail()を呼びます)
  • サブスクリプションCCU上限に到達 (DisconnectCause.MaxCcuReachedを伴い、OnConnectionFail()を呼びます。OnPhotonMaxCccuReached()も呼びます)

接続制限についてさらに知りたいなら: http://doc.exitgames.com/en/pun

<param name="masterServerAddress"サーバーのアドレス(あなた所有のものかPhoton Cloudのアドレスかを問いません)

Parameters
portサーバーの接続ポート。
appIDアプリケーションID(PhotonクラウドはあなたのゲームにGUIDを振ります)Your application ID (Photon Cloud provides you with a GUID for your game).
gameVersionこのクライアントのバージョン番号。ユーザーはゲームバージョンで個々に分断されます(このおかけで、互換性を壊す変更が可能になります)
static bool PhotonNetwork.ConnectToRegion ( CloudRegionCode  region,
string  gameVersion 
)
static

選択したPhoton Cloudの地域に接続します。

static bool PhotonNetwork.ConnectUsingSettings ( string  gameVersion)
static

エディターで設定するためにPhotonと接続します(PhotonServerSettingsファイルに保存します)。

このメソッドはofflineModeを無効にします(どのインスタンスとして作成されたGameObjectも破棄しません)。 このメソッドはisMessageQueueRunningをtrueにします。

サーバー設定はPUNウィザードによって作られます。自前サーバーのPhotonなら、 AppIdとPhoton Cloud Gamesの地域とサーバーアドレスを含みます。 これらの設定は一般的にはそれほど頻繁には変更されません。

設定ファイルを無視してどこかに接続するにはPhotonNetwork.ConnectToMasterを呼びます。

Photon Cloudに接続するには、正しいAppId(Photon Cloud Dashboardに表示されています)を設定ファイルに書き込む必要があります。 https://www.exitgames.com/dashboard

Photon Cloudへの接続が失敗する原因は:

  • 正しくないAppId (OnFailedToConnectToPhoton()を呼びます。正確なAppId値をチェックしてください)
  • ネットワークの問題 (OnFailedToConnectToPhoton()を呼びます)
  • 正しくない地域 (DisconnectCause.InvalidRegionを伴い、OnConnectionFail()を呼びます)
  • サブスクリプションCCU上限に到達 (DisconnectCause.MaxCcuReachedを伴い、OnConnectionFail()を呼びます。OnPhotonMaxCccuReached()も呼びます)

接続制限についてさらに知りたいなら: http://doc.exitgames.com/en/pun

Parameters
gameVersionこのクライアントのバージョン番号。ユーザーはゲームバージョンで個々に分断されます(このおかけで、互換性を壊す変更が可能になります)
static bool PhotonNetwork.CreateRoom ( string  roomName)
static

指定した名前でRoomを作成します。その名前のRoomがすでにあるときは失敗します。

もし一意なRoom名を作成したくないなら、nullか""を名前として渡すと、サーバーがroomNameを(GUIDを文字列として)割り当ててくれます。

作成されたRoomは自動的に現在使用しているロビー内に配置されます。もし特にロビーに入っていないなら、デフォルトのロビーに配置されます。

このメソッドを呼べるのはマスターサーバー上だけです。 内部的には、マスターはサーバーアドレス(と必要ならRoom名)を返します。 どちらも内部で、割り当てられたゲームサーバーとroomNameを切り替えるために使われます。

PhotonNetwork.autoCleanUpPlayerObjectsはこのRoomのAutoCleanUpプロパティになります。それはこのRoomに入室したクライアントすべてから使われます。

Parameters
roomName作成するルームの固有の名前。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.CreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby 
)
static

 ルームを作成しますが、ルームがすでに存在している場合は失敗します。マスタサーバでのみ呼び出すことができます。

 成功した場合、これは、OnCreatedRoomとOnJoinedRoomコールバックを呼び出します(最初のプレイヤーとして参加するので、後者)。  ルームを作成できない場合(すでに存在するため)、OnPhotonCreateRoomFailedが呼び出されます。

 固有のルーム名を作成しない場合は、nullまたは ""を名前として渡します。サーバはroomName(文字列としてGUID)を割り当てます。

 ルームは任意の数のロビーで作成することができます。これらは、ルームを作成する前に存在する必要はありません(必要に応じて自動作成される)。 ロビーはサーバ側でルームのリストを分割するために使用できます。そうすることでルームリストを短く保ち、扱いやすくします。

 typedLobbyパラメータを設定した場合、ルームはそのロビーに作成されます(いずれかのロビーでアクティブな場合でも)。  typedLobbyを設定しない場合、ルームは自動的に現在アクティブなロビー(もしあれば)、またはデフォルトのロビーに配置されます。

 マスターサーバ上のみで呼び出します。 内部的に、マスタはサーバアドレスで応答します (必要に応じてroomNameも)。 どちらも、割り当てられたゲームサーバとroomNameに切り替えるために内部的に使用されます。

 PhotonNetwork.autoCleanUpPlayerObjectsは、このルームのautoCleanUpプロパティになります。これはこのルームに参加するすべてのクライアントに使用されます。

Parameters
roomName作成するルームの固有の名前。サーバに名前を生成させるにはnullまたは""を渡します。
roomOptionsmaxPlayers、初期のカスタムルームのプロパティ、その他類似のものための一般的なオプション。RoomOptionsタイプを参照してください。
typedLobbynullの場合、ルームは自動的に現在使用されているロビーに作成されます。(明示的に参加しない場合はdefault)
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.CreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby,
string[]  expectedUsers 
)
static

指定した名前でRoomを作成します。その名前のRoomがすでにあるときは失敗します。マスターサーバーだけから呼ぶことができます。

成功すると、コールバックであるOnCreatedRoomとOnJoinedRoomを呼びます(後者では、あなたは最初のプレイヤーとしてRoomに入室します)。 (すでに同名のRoomがあるので)Roomが作成されなかったときは、OnPhotonCreateRoomFailedが呼ばれます。

もし一意なRoom名を作成したくないなら、nullか""を名前として渡すと、サーバーがroomNameを(GUIDを文字列として)割り当ててくれます。

複数のRoomを複数のロビー内に作成できます。ロビーはその中にRoomを作るより前は存在できません(必要なときに自動で作られます)。 ロビーが便利なのは、サーバー側にすでにあるRoom一覧を分けるときです。 こうすると、Room一覧を短く、管理しやすくできます。 TypedLobbyパラメーターをセットすると、Roomはそのロビーに作成されます (あなたがどのロビーにいても問題ありません)。TypedLobbyをセットしないと、 Roomは、自動的に自分のいるロビーかデフォルトロビーに配置されます。

このメソッドを呼べるのはマスターサーバー上だけです。 内部的には、マスターはサーバーアドレス(と必要ならRoom名)を返します。 どちらも内部で、割り当てられたゲームサーバーとroomNameを切り替えるために使われます。

PhotonNetwork.autoCleanUpPlayerObjectsはこのRoomのAutoCleanUpプロパティになります。それはこのRoomに入室したクライアントすべてから使われます。

Parameters
roomName作成するRoomの、一意な名前。nullか""を渡すと、サーバーが名前を生成してくれます。
roomOptionsRoomに関する標準的なオプション。たとえばmaxPlayers、最初の独自Roomプロパティなど。RoomOptions typeをご覧ください。
typedLobbynullなら、自動的に現在使用中(特にロビーに入っていないならデフォルト)のロビーにRoomは作られます。
expectedUsersこのゲームに参加を予定していてスロットをブロックしたいユーザ(UserIdで)の任意のリスト。
Returns
オペレーションがqueueに入り送信される場合。
static void PhotonNetwork.Destroy ( PhotonView  targetView)
static

PhotonViewが静的でないか、このクライアントの制御下ならば、GameObjectとそれに関連したPhotonViewをネットワーク上から破棄します。

ネットワーク上のGameObjectをRoom内で破棄するということが含むのは:

  • サーバーのRoomバッファーからInstantiate(インスタンス作成)コールを削除。
  • PhotonNetwork.Instantiateを呼んで間接的に作成されたPhotonViewに向けてバッファリングされていた、RPCの削除。
  • 他のクライアントに向けて送信されていた、(ネットワークラグに影響された)GameObjectを削除しろというメッセージ。

一般的に、Roomを退室すると、GameObjectは自動的に破棄されます。 Room内にいないときGameObjectを破棄すると、そのDestroyはローカルだけで実行されます。

ネットワーク上のオブジェクト破棄が実行できるのは、それがPhotonNetwork.Instantiate()で作られたオブジェクトだけです。 シーンと共に読み込まれたオブジェクトは、PhotonViewコンポーネントを持つ持たないに関わらず、無視されます。

このクライアントの制御下になるGameObjectとは:

  • このクライアントにインスタンス作成されて所有されている。
  • Roomを退室したプレイヤーがインスタンス作成したオブジェクトで、Master Clientに制御されている。
  • シーンが所有するゲームオブジェクトで、Master Clientに制御されている。
  • クライアントがRoom内にいないとき、破棄される可能性のあるGameObject。
Returns
何も返しません。問題については、エラーログをチェックしてください。
static void PhotonNetwork.Destroy ( GameObject  targetGo)
static

PhotonViewが静的でないか、このクライアントの制御下ならば、GameObjectとそれに関連したPhotonViewをネットワーク上から破棄します。

ネットワーク上のGameObjectをRoom内で破棄するということが含むのは:

  • サーバーのRoomバッファーからInstantiate(インスタンス作成)コールを削除。
  • PhotonNetwork.Instantiateを呼んで間接的に作成されたPhotonViewに向けてバッファリングされていた、RPCの削除。
  • 他のクライアントに向けて送信されていた、(ネットワークラグに影響された)GameObjectを削除しろというメッセージ。

一般的に、Roomを退室すると、GameObjectは自動的に破棄されます。 Room内にいないときGameObjectを破棄すると、そのDestroyはローカルだけで実行されます。

ネットワーク上のオブジェクト破棄が実行できるのは、それがPhotonNetwork.Instantiate()で作られたオブジェクトだけです。 シーンと共に読み込まれたオブジェクトは、PhotonViewコンポーネントを持つ持たないに関わらず、無視されます。

このクライアントの制御下になるGameObjectとは:

  • このクライアントにインスタンス作成されて所有されている。
  • Roomを退室したプレイヤーがインスタンス作成したオブジェクトで、Master Clientに制御されている。
  • シーンが所有するゲームオブジェクトで、Master Clientに制御されている。
  • クライアントがRoom内にいないとき、破棄される可能性のあるGameObject。
Returns
何も返しません。問題については、エラーログをチェックしてください。
static void PhotonNetwork.DestroyAll ( )
static

Room内のGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。サーバーにバッファリングされたすべてを削除します。これを呼べるのは、Master Client(全員にむけて)だけです。

これを呼べるのは、Master Client(全員にむけて)だけです。 Destroyメソッドとは違い、これはサーバーのRoomバッファーのすべてを削除します。 ゲームがInstantiateとRPCコールの前にすべてをバッファリングするので、それもサーバーから削除されます。

すべて破棄することは以下を含みます:

  • サーバーのRoomバッファーにあるすべて(Instantiate, RPC, その他)を削除します。
  • 他のクライアントに、ローカルのすべてを破棄するというメッセージを送信します(ネットワーク・ラグの影響を受けます)。

ネットワーク上のオブジェクト破棄が実行できるのは、それがPhotonNetwork.Instantiate()で作られたオブジェクトだけです。 シーンと共に読み込まれたオブジェクトは、PhotonViewコンポーネントを持つ持たないに関わらず、無視されます。

Returns
何も返しません。問題については、エラーログをチェックしてください。
static void PhotonNetwork.DestroyPlayerObjects ( PhotonPlayer  targetPlayer)
static

ターゲットプレイヤーのGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。これを呼べるのは、ローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)です。

ネットワーク上のGameObjectをRoom内で破棄するということが含むのは:

  • サーバーのRoomバッファーからInstantiate(インスタンス作成)コールを削除。
  • PhotonNetwork.Instantiateを呼んで間接的に作成されたPhotonViewに向けてバッファリングされていた、RPCの削除。
  • 他のクライアントに向けて送信されていた、(ネットワークラグに影響された)GameObjectを削除しろというメッセージ。

ネットワーク上のオブジェクト破棄が実行できるのは、それがPhotonNetwork.Instantiate()で作られたオブジェクトだけです。 シーンと共に読み込まれたオブジェクトは、PhotonViewコンポーネントを持つ持たないに関わらず、無視されます。

Returns
何も返しません。問題については、エラーログをチェックしてください。
static void PhotonNetwork.DestroyPlayerObjects ( int  targetPlayerId)
static

(IDで指定した)プレイヤーのGameObject・PhotonView・それらの発したRPCをすべてネットワーク上から破棄します。これを呼べるのは、ローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)です。

ネットワーク上のGameObjectをRoom内で破棄するということが含むのは:

  • サーバーのRoomバッファーからInstantiate(インスタンス作成)コールを削除。
  • PhotonNetwork.Instantiateを呼んで間接的に作成されたPhotonViewに向けてバッファリングされていた、RPCの削除。
  • 他のクライアントに向けて送信されていた、(ネットワークラグに影響された)GameObjectを削除しろというメッセージ。

ネットワーク上のオブジェクト破棄が実行できるのは、それがPhotonNetwork.Instantiate()で作られたオブジェクトだけです。 シーンと共に読み込まれたオブジェクトは、PhotonViewコンポーネントを持つ持たないに関わらず、無視されます。

Returns
何も返しません。問題については、エラーログをチェックしてください。
static void PhotonNetwork.Disconnect ( )
static

このクライアントをPhotonサーバーと、Roomに残るプロセスから回線切断します。そしてOnDisconnectedFromPhotonを完了時に呼びます。

切断すると、クライアントは“disconnecting”メッセージをサーバーに送信します。それをすると、あなたを含む同じRoomにいるプレイヤーからの退室/回線切断メッセージのスピードが上がります (それをしないと、サーバーがこのクライアントの接続をタイムアウトします)。 オフラインモードで使うと、状態変更とイベントコールOnDisconnectedFromPhotonは即座に実行されます。 オフラインモードもfalseにセットされます。 いったん回線切断されると、クライアントから再接続可能になります。ConnectUsingSettingsを使ってください。

delegate void PhotonNetwork.EventCallback ( byte  eventCode,
object  content,
int  senderId 
)

OnEventCallのデリゲートを使用可能にするかを決めます。

eventCodeが200未満ならデリゲートに向けて転送されます。

Parameters
eventCode着信イベントに割り当てられた数値。
content送信者がイベントに送った内容。
senderIdイベントに送信したプレイヤーID。「Room」がイベントに送信したなら0でしょう。
static void PhotonNetwork.FetchServerTimestamp ( )
static

サーバータイムスタンプを更新します(非同期動作で、サーバーを往復します)

これが便利なのは、ネットワーク状態が悪いのでタイムスタンプが使用不能または不正確なときです。

static bool PhotonNetwork.FindFriends ( string[]  friendsToFind)
static

フレンド一覧のRoomとオンライン状況をリクエストします。そして結果をPhotonNetwork.Friendsに格納します。

マスターサーバーだけで動作して、しぼり込まれたユーザーの一覧がプレイしているRoomを探査します。

結果はPhotonNetwork.Friendsが有効なときに保存されます。 リストはOpFindFriendsを最初に使ったとき初期化されます(初期化前はnullです)。 一覧を更新するには、FindFriendsを再度呼んでください(5秒後に、あるいは10か20秒後に)。

ユーザーがお互いを認識するには、一意な名前をPhotonNetwork.playerNameで設定するか、または PhotonNetwork.AuthValuesで設定します。AuthValueにセットされたユーザーIDはplayerNameを上書きする ので、フレンドが認証のため使うIDを自分は知っている点に注意してください。 AuthValueは接続時にOpAuthenticateで送信されます。 そのため、AuthValueは接続より前にセットする必要があります!

注記:フレンド一覧を使用中に、プレイヤー名を変更するのは意味がありません。

フレンド一覧は(Photonによっては提供されないので)別のところから持ってこなくてはなりません。

内部動作: サーバーレスポンスはinfoの2つの配列(どのインデックスもリクエストにマッチしたフレンド1人1人)を含みます: ParameterCode.FindFriendsResponseOnlineList = オンライン状況のbool[] ParameterCode.FindFriendsResponseRoomIdList = Room名のstring[] (Roomに入室していないなら空文字列)

Parameters
friendsToFindフレンドの配列(一意なplayerNameかAuthValuesを付けるよう注意)
Returns
この操作が送信されたかどうか(接続している必要があります。いつであってもリクエストは同時には1つだけ可能です)。
static HashSet<GameObject> PhotonNetwork.FindGameObjectsWithComponent ( Type  type)
static

特定の型を持つComponentを伴うGameObjectを検索します(FindObjectsOfTypeを使います)。

Parameters
typeTypeはComponentである必要があります。
Returns
定の型のComponentを持つGameObjectのHashSet
static int PhotonNetwork.GetPing ( )
static

現在の、Photonサーバーへの往復にかかる時間。

Returns
(サーバーに行って返ってくる)ラウンドトリップ時間
static RoomInfo [] PhotonNetwork.GetRoomList ( )
static

現在把握されているRoomをRoomInfo配列で取得します。ロビーにいるとき利用できて更新されます(insideLobbyをチェックしてください)。

この一覧は内部のRoom一覧をキャッシュしたコピーです。そのため、必要なら毎フレームアクセスすることも可能です。 RoomInfo毎にRoomが満室かを、入室する前に、playerCountとmaxPlayersを比較することでチェックできます。

Room名は入室のときに(JoinRoomを通して)使う必要があります。

閉まったRoomはロビーによって、一覧には載りますが、入室はできません。Roomにいるとき、どのプレイヤーも Room.visibleとRoom.openをセットしてRoomを隠し、マッチメイキングできなくしたりRoomを閉めたりできます。

Returns
ロビー内の現在のRoomであるRoomInfo[]
static void PhotonNetwork.InitializeSecurity ( )
static

Unity Networkingとの互換性のためだけに使われます。暗号化については接続時に自動で初期化されます。

static GameObject PhotonNetwork.Instantiate ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group 
)
static

ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。

Resourcesフォルダーのプレハブを使う代わりに、手動でInstantiateしてPhotonViewを割り当てることができます。文書を見てください。

Parameters
prefabNameインスタンス作成するプレハブ名。
positionインスタンス作成時に適用する、Vector3で表される位置。
rotationインスタンス作成時に適用する、Quaternionで表される回転。
groupこのPhotonViewのグループ。
Returns
インスタンス作成されたPhotonViewを伴う、GameObjectの新規インスタンス。
static GameObject PhotonNetwork.Instantiate ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group,
object[]  data 
)
static

ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。

Resourcesフォルダーのプレハブを使う代わりに、手動でInstantiateしてPhotonViewを割り当てることができます。文書を見てください。

Parameters
prefabNameインスタンス作成するプレハブ名。
positionインスタンス作成時に適用する、Vector3で表される位置。
rotationインスタンス作成時に適用する、Quaternionで表される回転。
groupこのPhotonViewのグループ。
data付随するインスタンス作成のデータ。これはPhotonView.instantiationDataに保存されます。
Returns
インスタンス作成されたPhotonViewを伴う、GameObjectの新規インスタンス。
static GameObject PhotonNetwork.InstantiateSceneObject ( string  prefabName,
Vector3  position,
Quaternion  rotation,
int  group,
object[]  data 
)
static

ネットワーク越しにプレハブからインスタンス作成します。このプレハブは"Resources"フォルダー直下に配置されている必要があります。

Master ClientのみがシーンオブジェクトをInstantiateできます。 Resourcesフォルダーのプレハブを使う代わりに、手動でInstantiateしてPhotonViewを割り当てることができます。文書を見てください。

Parameters
prefabNameインスタンス作成するプレハブ名。
positionインスタンス作成時に適用する、Vector3で表される位置。
rotationインスタンス作成時に適用する、Quaternionで表される回転。
groupこのPhotonViewのグループ。
data付随するインスタンス作成のデータ。これはPhotonView.instantiationDataに保存されます。
Returns
インスタンス作成されたPhotonViewを伴う、GameObjectの新規インスタンス。
static bool PhotonNetwork.JoinLobby ( )
static

マスターサーバー上で、デフォルトロビーに入ります。そのロビーでは、現在使用中のRoom一覧をみることができます。

Room一覧はサーバーから送信されて更新されます。 PhotonNetwork.GetRoomList()を使ってアクセスできるのは、キャッシュされた一覧です。

Room毎に、入室前にそのRoomが満室かそうでないかをチェックする必要があります。Photonは満室のRoom一覧も用意しますが、 Roomを閉じる、または隠すと(room.open = falseとroom.visible = false)その限りではありません。

うまくいけば、クライアントにランダムなゲームに参加させることができます。以下に詳細が記述されています。 http://doc.exitgames.com/en/realtime/current/reference/matchmaking-and-lobby

現在のプレイヤーやRoom数は、ロビーに入らなくても見ることができます (ただしマスターサーバー上にいる必要があります)。countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms, countOfRoomsを使ってください。

2つ以上のロビーを使って、Room一覧を短くすることができます。JoinLobby(TypedLobby lobby)をご覧ください。 新規Roomを作成するとき、そのRoomは現在使っているロビーかデフォルトロビーに「所属」させられます。

JoinRandomRoomをロビーに入らずに使うことができます。 ロビーに入らないために、接続する前にautoJoinLobby = falseをセットしましょう。 このとき、接続ワークフローは(実装していれば)OnConnectedToMasterを呼びます。

static bool PhotonNetwork.JoinLobby ( TypedLobby  typedLobby)
static

マスターサーバー上でロビーに入って、有効なRoomの一覧を得ることができます。

Room一覧はサーバーから送信されて更新されます。 PhotonNetwork.GetRoomList()を使ってアクセスできるのは、キャッシュされた一覧です。

どのクライアントもその場でロビーを構成することができます。複数のRoomを複数のロビーに分割すると、 個々の一覧を短くできます。しかし、一覧が多すぎると、マッチメイキングが面倒になるかもしれません。

うまくいけば、作るロビーを一定の数に抑えることができます。たとえば、 ゲームモード毎にロビーを作ります:king of the hill向けに"koth"、free for all向けに"ffa"など。

そのときロビーの一覧はありません。

SQL型のロビーがあると、ランダム・マッチメイキングに異なるフィルタリングを導入できます。 これはスキルをベースにしたゲームに向いているかもしれません。しかしSQLロビーにおいても、プロパティを名前でフィルターという慣習も押さえておく必要があるでしょう! どちらも、以下にリンクしたマッチメイキング文書に説明してあります。

うまくいけば、クライアントにランダムなゲームに参加させることができます。以下に詳細が記述されています。 http://confluence.exitgames.com/display/PTN/Op+JoinRandomGame

Room毎に、入室前にそのRoomが満室かそうでないかをチェックする必要があります。Photonは満室のRoom一覧も用意しますが、 Roomを閉じる、または隠すと(room.open = falseとroom.visible = false)その限りではありません。

現在のプレイヤーやRoom数は、ロビーに入らなくても見ることができます (ただしマスターサーバー上にいる必要があります)。countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms, countOfRoomsを使ってください。

新規Roomを作成するとき、そのRoomは現在使っているロビーかデフォルトロビーに「所属」させられます。

JoinRandomRoomをロビーに入らずに使うことができます。 ロビーに入らないために、接続する前にautoJoinLobby = falseをセットしましょう。 このとき、接続ワークフローは(実装していれば)OnConnectedToMasterを呼びます。

Parameters
typedLobby型のあるロビー(名前と型が必要)
static bool PhotonNetwork.JoinOrCreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby 
)
static

名前付きのRoomに入室するか、その場でRoom作成するかします。誰かがすでにRoomを作ったかどうかは知らなくてもかまいません。

このメソッドを使うと、プレイヤーのグループが同じRoomに入室するのが簡単になります。 グループがroomNameを変更したら、どのプレイヤーでもJoinOrCreateRoomを呼ぶことができます。 誰が実際に入室またはRoom作成しても、問題ありません。

roomOptionsとtypedLobbyパラメーターはこのクライアントが作成したRoomだけに使うことができます。 知っての通り、このクライアントがRoom作成すると、OnJoinedRoomコールバックが呼ばれます(その後でOnJoinedRoomも呼ばれます)。

Parameters
roomName入室するRoom名。null以外の必要があります。
roomOptionsまだRoomが存在しないときの、Roomに対するオプション。存在していれば値は無視されます。
typedLobby新規Roomを一覧したいロビー。Roomがすでにあり、入室済みなら無視されます。
Returns
動作がキュー行列に追加されてそのうち送信されるかどうか。
static bool PhotonNetwork.JoinOrCreateRoom ( string  roomName,
RoomOptions  roomOptions,
TypedLobby  typedLobby,
string[]  expectedUsers 
)
static

名前を付けられたルームに参加するか、その場で作成することができます。誰かがすでにルームを作成したかどうかを知る必要はありません。

 これは、プレイヤーのグループが同じルームに入ることを容易にします。 グループがroomNameを交換すればどのプレイヤーもJoinOrCreateRoomを呼び出すことができ、 誰が実際にルームに参加・作成したかは関係ありません。

 roomOptions と typedLobbyのパラメータはルームがこのクライアントによって実際に作成された場合にのみ使用されます。  OnCreatedRoomコールバックを取得したら、このクライアントがルームを作成したことが分かります(また、OnJoinedRoomが呼び出される前)。

 expectedUsersの配列を定義して、これらのユーザのためにルームのプレイヤースロットをブロックすることができます。  Photonでのこの機能は、「Slot Reservation」と呼ばれていて、ドキュメントページにも記載されています。

Parameters
roomName参加するルームの名前。非nullでなければなりません。
roomOptionsルームがまだ存在しない場合のためのオプション。そうでなければ、これらの値は無視されます。
typedLobby新しいルームをリストしたいロビー。ルームが既に存在していて参加された場合は無視されます。
expectedUsersこのゲームに参加を予定していてスロットをブロックしたいユーザ(UserIdで)の任意のリスト。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.JoinRandomRoom ( )
static

現在使われているロビーの、有効なRoomのどれかに入室します。有効なRoomがなければ失敗します。

Roomはその場で作成するとき、任意のロビー内に作成することができます。 Roomへの入室は、実際にはロビーに入らなくてもどのロビーからでも可能です。 TypedLobbyパラメーターで上書きしたJoinRandomRoomを使いましょう。

このメソッドでマッチするRoomは、1つのロビーに紐づけられたものだけです。 多くのロビーを使用しているなら、マッチするRoomを見つけるためには、JoinRandomRoomを繰り返し実行する必要があるかもしれません。 このメソッドが探し出すRoomは、現在有効なロビーか、(どのロビーにも入っていないなら) デフォルトロビーにあるRoomです。

失敗したときに、Roomを作成する(そしてそれを次にJoinRandomRoomを使う人のために有効にする)こともできます。 そうしないなら、すこし待ってから再び実行してください。

static bool PhotonNetwork.JoinRandomRoom ( Hashtable  expectedCustomRoomProperties,
byte  expectedMaxPlayers 
)
static

独自プロパティのマッチした、空いているRoomに入室しようとします。現在有効なRoomがない場失敗します。

Roomはその場で作成するとき、任意のロビー内に作成することができます。 Roomへの入室は、実際にはロビーに入らなくてもどのロビーからでも可能です。 TypedLobbyパラメーターで上書きしたJoinRandomRoomを使いましょう。

このメソッドでマッチするRoomは、1つのロビーに紐づけられたものだけです。 多くのロビーを使用しているなら、マッチするRoomを見つけるためには、 JoinRandomRoomを繰り返し実行する必要があるかもしれません。このメソッドが探し出すRoomは、 現在有効なロビーか、(どのロビーにも入っていないなら)デフォルトロビーにあるRoomです。

失敗したとき、Roomを作成する(そしてそれを次にJoinRandomRoomを使う人のために有効にする) こともできます。そうしないなら、すこし待ってから再び実行してください。

Parameters
expectedCustomRoomPropertiesこの独自プロパティにマッチするRoomのためのフィルター(string型のキーと値)。フィルター無効にするにはnullを渡します。
expectedMaxPlayers最大プレイヤー数指定のフィルター。0を指定するとどんなmaxPlayer値でも受け入れます。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.JoinRandomRoom ( Hashtable  expectedCustomRoomProperties,
byte  expectedMaxPlayers,
MatchmakingMode  matchingType,
TypedLobby  typedLobby,
string  sqlLobbyFilter,
string[]  expectedUsers = null 
)
static

独自プロパティのマッチした、空いているRoomに入室しようとします。現在有効なRoomがない場合失敗します。

Roomはその場で作成するとき、任意のロビー内に作成することができます。 Roomへの入室は、実際にはロビーに入らなくてもどのロビーからでも、このoverloadを使うことで、可能です。

このメソッドでマッチするRoomは、1つのロビーに紐づけられたものだけです。 多くのロビーを使用しているなら、マッチするRoomを見つけるためには、JoinRandomRoomを繰り返し 実行する必要があるかもしれません。このメソッドが探し出すRoomは、指定されたロビーか、 (指定がないなら)現在有効なロビーか、(有効なロビーがないなら)デフォルトロビーにあるRoomです。

失敗したとき、Roomを作成する(そしてそれを次にJoinRandomRoomを使う人のために有効にする)こともできます。 そうしないなら、すこし待ってから再び実行してください。

オフラインモードでは、Roomを作成しても何もプロパティはセットされず、このJoinRandomRoomに与えた パラメーターはすべて無視されます。イベント/コールバックOnJoinedRoomが呼ばれます(enum PhotonNetworkingMessageをお読みください)。

 expectedUsersの配列を定義して、これらのユーザのためにルームのプレイヤースロットをブロックすることができます。  Photonでのこの機能は、「Slot Reservation」と呼ばれていて、ドキュメントページにも記載されています。

Parameters
expectedCustomRoomPropertiesこの独自プロパティにマッチするRoomのためのフィルター。フィルター無効にするにはnullを渡します。
expectedMaxPlayers最大プレイヤー数指定のフィルター。0を指定するとどんなmaxplayer値でも受け入れます。
matchingType使用可能なマッチメイキングアルゴリズムを1つ選びます。MatchmakingMode enumでオプションをご覧ください。
typedLobbyその中でRoomを探したいロビー。nullを渡すと、デフォルトロビーを使います。これは、そのロビーに入りもせず、ロビープロパティもセットしません。

<param name="sqlLobbyFilter"SQL型のロビーのためのフィルター文字列。

Parameters
expectedUsersこのゲームに参加を予定していてスロットをブロックしたいユーザ(UserIdで)の任意のリスト。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.JoinRoom ( string  roomName)
static

roomnameでルームに参加して、成功時に​​OnJoinedRoom()を呼び出します。これは、ロビーには影響されません。

 成功すると、任意のスクリプトでOnJoinedRoom()メソッドが呼び出されます。ルームへの参加に反応するように実装することができます。

 ルームが満室または利用不可の場合、JoinRoomは失敗します(参加を試みている間に空になる場合があります)。  エラーの場合にコールバックを取得するため、OnPhotonJoinRoomFailed()を実装します。

 ロビーのリストからルームに参加するには、roomNameとしてRoomInfo.nameを使用します。  複数のロビーを使用していても、roomNameは常にアプリケーション上で「グローバル」なので、ロビーを指定する必要がありません。マスタサーバーがルームを見つけます。

 Photon Cloudでは、アプリケーションはAppId,およびGameとPUNのバージョンで定義されます。

PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom

Parameters
roomName参加するルームの固有の名前。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.JoinRoom ( string  roomName,
string[]  expectedUsers 
)
static

roomnameでルームに参加して、成功時に​​OnJoinedRoom()を呼び出します。これは、ロビーには影響されません。

 成功すると、任意のスクリプトでOnJoinedRoom()メソッドが呼び出されます。ルームへの参加に反応するように実装することができます。

 ルームが満室または利用不可の場合、JoinRoomは失敗します(参加を試みている間に空になる場合があります)。  エラーの場合にコールバックを取得するため、OnPhotonJoinRoomFailed()を実装します。

 ロビーのリストからルームに参加するには、roomNameとしてRoomInfo.nameを使用します。 Despite using multiple lobbies, a roomName is always "global" for your application and so you don't have to specify which lobby it's in. The Master Server will find the room.  Photon Cloudでは、アプリケーションはAppId,およびGameとPUNのバージョンで定義されます。

 expectedUsersの配列を定義して、これらのユーザのためにルームのプレイヤースロットをブロックすることができます。  Photonでのこの機能は、「Slot Reservation」と呼ばれていて、ドキュメントページにも記載されています。

PhotonNetworkingMessage.OnPhotonJoinRoomFailed PhotonNetworkingMessage.OnJoinedRoom

Parameters
roomName参加するルームの固有の名前。
expectedUsersこのゲームに参加を予定していてスロットをブロックしたいユーザ(UserIdで)の任意のリスト。
Returns
オペレーションがqueueに入り送信される場合。
static bool PhotonNetwork.LeaveLobby ( )
static

ロビーから出ます。有効なRoomについて更新を受け取るのを停止します。

これはPhotonNetwork.lobbyをリセットしません! これのおかげで、 特定のロビーに後から入りやすくなります。

countOfPlayers, countOfPlayersOnMaster, countOfPlayersInRooms, countOfRoomsの値は ロビーにいなくてさえも受け取ります。

JoinRandomRoomをロビーに入らずに使うことができます。 接続するときロビーに入らないには、autoJoinLobbyを使いましょう。

static bool PhotonNetwork.LeaveRoom ( )
static

現在のRoomを退室して、マスターサーバーに戻ります。マスターサーバーではRoomに入室したりRoom作成できます。remarksをご覧ください。

autoCleanUpをfalseにしていないなら、(ネットワーク)GameObjectとPhotonViewをクリーンアップします。 マスターサーバーに戻ります。

オフラインモードでは、ローカルの「フェイク」Roomがクリーンアップされて、OnLeftRoomが即座に呼ばれます。

static void PhotonNetwork.LoadLevel ( int  levelNumber)
static

ネットワークのメッセージキューを一時停止するため、レベル読み込みをラップします。オプションで、読み込んだレベルをRoom内で同期します。

読み込んだレベルをRoom内で同期するため、PhotonNetwork.automaticallySyncSceneをtrueにしてください。 するとRoom内のMaster Clientは、他のRoom内のプレイヤーと、読み込んだレベルを同期します。

レベル読み込みのあいだは、他のプレイヤーが受信するメッセージを発信しないのが賢明です。 このメソッドがそこに気をつけるには、PhotonNetwork.isMessageQueueRunning = falseにセットして、 レベルを読み込み中にキューを使用可能にします。

(同じGameObjectとPhotonViewを含まない)別のシーンを読み込む前にRPCを発行しないよう注意してください。 それを呼び出すにはOnJoinedRoomで可能です。

これはApplication.LoadLevelを使用します。

Parameters
levelNumber読み込むレベルの数。レベル数を使うときは、それはどのクライアントでも同じになることに気をつけてください。
static void PhotonNetwork.LoadLevel ( string  levelName)
static

ネットワークのメッセージキューを一時停止するため、レベル読み込みをラップします。オプションで、読み込んだレベルをRoom内で同期します。

レベル読み込みのあいだは、他のプレイヤーが受信するメッセージを発信しないのが賢明です。 このメソッドがそこに気をつけるには、PhotonNetwork.isMessageQueueRunning = falseにセットして、 レベルを読み込み中にキューを使用可能にします。

読み込んだレベルをRoom内で同期するため、PhotonNetwork.automaticallySyncSceneをtrueにしてください。 するとRoom内のMaster Clientは、他のRoom内のプレイヤーと、読み込んだレベルを同期します。

(同じGameObjectとPhotonViewを含まない)別のシーンを読み込む前にRPCを発行しないよう注意してください。 それを呼び出すにはOnJoinedRoomで可能です。

これはApplication.LoadLevelを使用します。

Parameters
levelName読み込むレベルの数。レベル数を使うときは、それは同じRoom内のどのクライアントでも利用できることに気をつけてください。
static void PhotonNetwork.NetworkStatisticsReset ( )
static

通信量統計をリセットして、再有効化します。

static string PhotonNetwork.NetworkStatisticsToString ( )
static

NetworkStatisticsEnabledがいくつかの統計をまとめるのに使われたときのみ、使用できます。

Returns
ネットワーク動態統計の文字列
static void PhotonNetwork.OverrideBestCloudServer ( CloudRegionCode  region)
static

ConnectToBestCloudServer(string gameVersion)で使われている地域を上書きします。

このメソッドはクラウドサーバーすべてにpingした結果を上書きします。
これを使うことで、ユーザーがプレイヤー設定で手動で地域を選択する手間を省けます。
注記:PhotonNetwork.ConnectToRegionを使って(一時的に)特定の地域に接続することもできます。

static bool PhotonNetwork.RaiseEvent ( byte  eventCode,
object  eventContent,
bool  sendReliable,
RaiseEventOptions  options 
)
static

Room内の、一からカスタマイズ可能なイベントを送信します。イベントは少なくともEventCode (0..199)と内容で構成されています。

誰かが送信したイベントを受信するには、PhotonNetwork.OnEventCallに、イベントを扱うメソッドを登録してください。

例: private void OnEventHandler(byte eventCode, object content, int senderId) { Debug.Log("OnEventHandler"); }

PhotonNetwork.OnEventCall += this.OnEventHandler;

senderIdで、イベントを送信したPhotonPlayerを検索できます。 異なるタイプの内容とアクションにそれぞれ別のeventCodeを割り当てるのがベストプラクティスです。

eventContentはオプションです。何かを送信可能にするには、それが“シリアライズ可能な型”、 つまりクライアントが基本的にはbyte[]に変換したもの、である必要があります。 UnityのVector2, Vector3, Quaternionなども含む多くの基礎的な型と配列ではサポートされています。しかしTransformsやいくつかのプロジェクトが定義したクラスはサポートされていません! 自分のクラスを“シリアライズ可能な型”にするには、CustomTypes.csの例に従ってください。

RaiseEventOptionsにはいくつかの(あまり直感的ではない)コンビネーションルールがあります: targetActors(PhotonPlayer.IDの値の配列)をセットすると、receiversパラメーターは無視されます。 イベントキャッシュを使うと、targetActor(ターゲットプレイヤー)・receiver(受信者)・interestGroup(インタレスト・グループ)は使われません。バッファリングされたイベントを使用します。 もしcachingOption removeFromRoomCacheを使うと、eventCodeと内容は実際には送信されず、フィルターとして使われます。

Parameters
eventCode1バイトでイベント型を表します。アクションごとにコードを変えて使いたいとか、どのコンテントか予想できるシグナルにしたくなるかもしれません。使える値の範囲は 0..199 です。
eventContentいくつかのシリアライズ可能なオブジェクト、たとえばstring, byte, integer, float(など)とその配列。Hashtableにバイトキーも変数変数内容を送信するのによいです。
sendReliableこのイベントがすべてのプレイヤーに届くか確認します。認識されるのに必要なのは、通信帯域とスキップされないこと(データ損失に備えてラグを追加してもよい)です。
optionsイベントをより複雑に使うことができます。nullならRaiseEventOptions.Defaultが(良好なら)使われます。
Returns
イベントが送信されなかったときfalseです。
static bool PhotonNetwork.Reconnect ( )
static

切断後、マスタサーバーに再接続するために使用することができます。

After losing connection, you can use this to connect a client to the region Master Server again. Cache the room name you're in and use ReJoin(roomname) to return to a game.  一般的なユースケース:iOSデバイス上のロックボタンを押すと、すぐに切断されます。

static bool PhotonNetwork.ReconnectAndRejoin ( )
static

クライアントがゲームプレイ中に接続を失った場合、このメソッドは再接続してルームへの再入室を試みます。

 このメソッドは、PUNが前にいたルームをホストしているゲームサーバに直接再接続します。  その間にルームが終了した場合は、PUNはOnPhotonJoinRoomFailedを呼び出して、マスターサーバにこのクライアントを返します。

 このクライアントが再接続を試みて再び参加する場合は(条件が満たされている場合)、戻り値を確認してください。  ReconnectAndRejoinがfalseを返した場合でも、ReconnectとReJoinを試みることができます。

 PhotonNetwork.ReJoinと同様に、プレイヤーごとに固有のIDを使用する必要があります(UserID)。

Returns
 戻る既知のルームやゲームサーバが存在しない場合、false。このクライアントはReconnectAndRejoinを試みるのをやめます。
static void PhotonNetwork.RefreshCloudServerRating ( )
static

クラウドサーバーすべてに再pingして、(現在)ping値が最もよいものを探します。

static bool PhotonNetwork.ReJoinRoom ( string  roomName)
static

切断後にルームに戻り、再接続するために使用することができます。

 接続を失った後、クライアントが速やかに再接続できればルームに戻りプレイを継続できるかもしれません。Reconnect()とこのメソッドを使用します。

Cache the room name you're in and use ReJoin(roomname) to return to a game.

 注意:どのルームに再び参加する場合も、UserIdを使用する必要があります!  またRoomOptions.PlayerTtlを設定する必要があります。

重要: Instantiate() とRPCの使用はまだ対応されていません  PhotonViewの所有者の規則は、ゲームへのシームレスな復帰を防ぎます。  代わりに、イベント・キャッシングでCustom PropertiesとRaiseEventを使用してください。

 一般的なユースケース:iOSデバイス上のロックボタンを押すと、すぐに切断されます。

static void PhotonNetwork.RemovePlayerCustomProperties ( string[]  customPropertiesToDelete)
static

「この」プレイヤーの独自プロパティをローカルで削除します。重要:この変更は同期されません! この挙動はRoomを切り替えるとき便利です。

このメソッドは注意して使ってください。これはプレイヤーのあいだに状態の矛盾を生み出します! これはplayer.customPropertiesをローカルで変更するだけです。 これが有用なのは、複数のゲームのあいだで独自プロパティ(それらに格納されたターンやキルなど)を削除できる点です。

SetPlayerCustomProperties()は同期しますが、Room内にいるとき値をnullにセットするのに使うこともできます。 これはRoom内で「削除された」と見なすことができます。

customPropertiesToDeleteがnullかエントリー0なら、独自プロパティすべては削除されます(新しいHashtableに置き換わります)。 削除するキーを指定すると、それはHashtableから削除されますが、ほかのキーは影響を受けません。

Parameters
customPropertiesToDelete削除する独自プロパティのキーの一覧。remarksをご覧ください。
static void PhotonNetwork.RemoveRPCs ( PhotonPlayer  targetPlayer)
static

ターゲットプレイヤーに送信され、サーバーでバッファリングされたRPCを、すべてネットワーク上から破棄します。これを呼べるのはローカルプレイヤー(自分に向けて)、またはMaster Client(全員にむけて)のみです。

このメソッドは以下のどちらも必要です:

  • ターゲットプレイヤーのクライアントであること。
  • このクライアントはMaster Client(PhotonPlayerのRPCをすべて削除可能)であること。

ターゲットプレイヤーがRPCを呼んだとき同時に呼ばれてもいたら、ネットワーク遅延によってそれが バッファリングされるか、ほかと同じくクリアされるかが決まります。

Parameters
targetPlayerこのプレイヤーのバッファリングされたRPCはサーバーのバッファーから削除されます。
static void PhotonNetwork.RemoveRPCs ( PhotonView  targetPhotonView)
static

targetPhotonViewを通して送信される、サーバーでバッファリングされたRPCを、すべて削除します。Master Clientと、targetPhotonViewの所有者が、これを呼ぶことができます。

このメソッドは以下のどちらも必要です:

  • このクライアントはtargetPhotonViewの所有者(インスタンス作成した)であること。
  • このクライアントはMaster Client(PhotonPlayerのRPCをすべて削除可能)であること。
Parameters
targetPhotonViewこのPhotonViewのバッファリングされたRPCはサーバーのバッファーから削除されます。
static void PhotonNetwork.RemoveRPCsInGroup ( int  targetGroup)
static

targetGroupに送信される、サーバーでバッファリングされたRPCを、すべて削除します。Master Clientと、targetPhotonViewの所有者が、これを呼ぶことができます。

このメソッドは以下のどちらも必要です:

  • このクライアントはMaster Client(グループ毎のRPCをすべて削除可能)であること。
  • その他のクライアント:PhotonViewそれぞれについて、このクライアントの制御下にあるとチェックされた場合、それらのRPCだけが削除されます。
Parameters
targetGroupRPCをすべて削除されたインタレスト・グループ。
static void PhotonNetwork.SendOutgoingCommands ( )
static

即座にRPCを送信しInstantiate(インスタンス作成)を呼び出すのに使われます。それらは他のプレイヤーに向かいます。

レベルを読み込むRPCを送出し、その後で自身で読み込むことは便利です。 読み込み中はRPCは他者には送信されないので、RPCを「読み込む」のは遅れるでしょう。 このメソッドを使って、RPCを「他者」に送信してメッセージキューを (isMessageQueueRunningで)利用不可にしてから読み込みできます。

static void PhotonNetwork.SetLevelPrefix ( short  prefix)
static

後にインスタンス作成されるPhotonViewに、レベルプリフィックスをセットします。1つのPhotonViewに必要なだけならセットしないでください!

重要:複数のレベルプリフィックスを使っていないなら、単にこの値をセットしないでください。 デフォルト値は通信量から最適化されます。

これは既存のPhotonViewに影響しません(既存のPhotonViewまでは変更しません)。

異なるレベルプリフィックスを付加して送信されたメッセージは、受信されても実行されません。 この挙動はRPC、Instantiate(インスタンス作成)、同期に影響します。

PUNはこの値をリセットしないことに気をつけてください。それをするなら、自身で実行する必要があります。

Parameters
prefix最大値はshort.MaxValue = 32767。
static bool PhotonNetwork.SetMasterClient ( PhotonPlayer  masterClientPlayer)
static

サーバーに依頼して、別のプレイヤーを現在のRoomのMaster Clientに割り当ててもらいます。

RPCとRaiseEventには、RoomのMaster Clientだけにメッセージを送信するオプションがあります。 SetMasterClientはどのクライアントがそのメッセージを受け取るかに影響します。

このメソッドは、サーバーの新Master Clientをセットする動作を呼び出します。これはサーバーへの往復の時間がかかります。 成功すると、このクライアントと他者はサーバーから新Master Clientについて受信します。

SetMasterClientで、現在のMaster Clientは新規Master Clientに置き換えられるべきだと、サーバーに伝えます。 Master Clientが変わってから時間がたっていないなら失敗します。このエラーにはコールバックはありません。 いずれにせよ、すべてのクライアントはサーバーが割り当てた新Master Clientについて受信します。

PhotonNetwork.masterClientについてもご覧ください。

On v3 servers: (RPCから使用可能な)ReceiverGroup.MasterClientは、これに影響されません(その後もRoom内のもっとも低いplayer.IDを指します)。 このenum値を使用することは避けてください(代わりに特定のプレイヤーに送信してください)。

現在のMaster Clientが退室すると、PUNは“もっともプレイヤーIDが低い”という指標で新Master Clientを見つけます。 OnMasterClientSwitchedを実装して、この場合のコールバックを取得します。PUNの選択したMaster Clientが新Master Clientを割り当てるかもしれません。

マスター割り当てのエンドレスループを作り出すことは起こりえない、と確認してください!独自Master Clientを選んだとき、どのクライアントも同じプレイヤーを指し示しますが、 実際にそのプレイヤーに割り当てるかどうかは重要ではありません。

ローカルではMaster Clientは即座に切り替えられますが、リモートクライアントはイベントを受け取ります。 これはつまり、現在のMaster Clientが退室するときのように、ゲームが一時的にMaster Clientなしになるということです。

手動でMaster Clientを切り替えるときの注意事項は、このユーザーが退室することで、 どのMaster Clientであっても、機能しなくなるかもしれないことです。

Parameters
masterClientPlayer次のMaster Clientになるプレイヤー。
Returns
この処理が実行されないときfalseです。(オフラインモードでは)Room内にいる必要があります。
static void PhotonNetwork.SetPlayerCustomProperties ( Hashtable  customProperties)
static

この(ローカル)プレイヤーのプロパティをセットして、他のプレイヤーにも同期します(直接編集しないでください)。

Room内では、プロパティは他のプレイヤーに同期されています。Roomに入室すると、 CreateRoom, JoinRoom, JoinRandomRoomのすべてが自分のプレイヤーの独自プロパティに適用されます。 Hashtable全体が送信されます。更新されたキー/値のみをセットすると通信量を最小化できます。

Hashtableがnullなら、その独自プロパティはクリアされます。 独自プロパティは自動ではクリアされないので、変更しない限りは、次のRoomに持ち越されます。

PhotonNetwork.player.customPropertiesを編集してプロパティをセットしないでください!

Parameters
customPropertiesstring型のキーだけをこのハッシュテーブルに使用できます。もしnullなら独自プロパティはすべて削除されます。
static void PhotonNetwork.SetReceivingEnabled ( int  group,
bool  enabled 
)
static

指定されたグループで受信は可能/不可能か(PhotonViewに適用されます)

Parameters
group影響するインタレスト・グループ。
enabledグループからの受信を可能(か不可)に設定します。
static void PhotonNetwork.SetReceivingEnabled ( int[]  enableGroups,
int[]  disableGroups 
)
static

指定されたグループで受信は可能/不可能か(PhotonViewに適用されます)

Parameters
enableGroups可能にするインタレスト・グループ(またはnull)。
disableGroups不可にするインタレスト・グループ(またはnull)。
static void PhotonNetwork.SetSendingEnabled ( int  group,
bool  enabled 
)
static

指定されたグループで送信は可能/不可能か(PhotonViewに適用されます)

Parameters
group影響するインタレスト・グループ。
enabledグループからの受信を可能(か不可)に設定します。
static void PhotonNetwork.SetSendingEnabled ( int[]  enableGroups,
int[]  disableGroups 
)
static

指定されたグループで送信は可能/不可能か(PhotonViewに適用されます)

Parameters
enableGroups送信可能にするインタレスト・グループ(またはnull)。
disableGroups送信不可にするインタレスト・グループ(またはnull)。
static void PhotonNetwork.SwitchToProtocol ( ConnectionProtocol  cp)
static

オフラインのとき、ネットワークプロトコルを切り替え可能になります(これは使用可能ポートに接続するときに影響します)。

プロトコルを切り替えたとき、マスターサーバーのポートも切り替えることに注意してください。デフォルトポートは: TCP: 4530 UDP: 5055

このメソッドはこれに似ています:
Connect(serverAddress, <udpport|tcpport>, appID, gameVersion)

またはConnectUsingSettings()を使うと、この設定のポートをこのように切り替え可能です:
PhotonNetwork.PhotonServerSettings.ServerPort = 4530;

現在のプロトコルは以下のようにすれば読み取れます:
PhotonNetwork.networkingPeer.UsedProtocol

これはモバイルPUN+のネイティブソケットプラグインでは動作しません!

Parameters
cp下層レベルコネクションに使うネットワークプロトコル。UDPがデフォルトです。TCPはすべてのプラットフォームで使用不可です(remarksをご覧ください)。
static void PhotonNetwork.UnAllocateViewID ( int  viewID)
static

(手動でインスタンス作成されて破棄されたネットワーク上のオブジェクトの)viewIDの割り当てを解除します。

Parameters
viewIDA viewID manually allocated by this player.
static bool PhotonNetwork.WebRpc ( string  name,
object  parameters 
)
static

この操作で、独自Webサービスをname(path)と指定したパラメーターで、Photonに呼び出させることができます。

これはサーバー側機能なので、使う前に、Photon Cloud Dashboardでセットアップしなくてはなりません。
Turnbasedの機能概要の短い導入を見てください。
http://doc.photonengine.com/en/turnbased/current/getting-started/feature-overview br/> パラメーターは変換されてJSonフォーマットになります。そのためパラメーターは互換性があることに留意してください。

レスポンス取得方法のため、PhotonNetworkingMessage.OnWebRpcResponseをご覧ください。

理解するべき重要なことですが、OperationResponseはWebRPCが呼ばれたかどうかを示しているだけです。 レスポンスの内容はWebサービスが返す値とエラー/サクセスコードです。 Webサービスが失敗した場合、エラーコードとデバッグメッセージが通常は OperationResponse内部に入っています。

WebRpcResponseクラスは、WebRPCレスポンスからもっとも価値のある内容を取り出す ヘルパークラスです。

サンプルコールバック実装:

public void OnWebRpcResponse(OperationResponse response)
{
    WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
    if (webResponse.ReturnCode != 0) { //...
    }
    switch (webResponse.Name) { //...
    }
    // and so on
}

Member Data Documentation

float PhotonNetwork.BackgroundTimeout = 60.0f
static

UnityのOnApplicationPause(true)が呼ばれた後の接続を保持するためのフォールバックスレッドをPUNがどのくらいの期間動かすかを定義します。

BackgroundTimeoutをセットすると、OnApplicationPause(true)が呼ばれた後BackgroundTimeout秒後に、PUNは接続保持を止めます。 Timeoutを設定した後も、通常のタイムアウトは発生します。 アプリは再びアクティブになった時にタイムアウトの通知を受けるでしょう。

タイムアウトをハンドリングするには、OnConnectionFail()を実装しましょう。(この場合の理由はDisconnectByServerTimeout)

非アクティブのアプリ/接続をしばらく経ってからタイムアウトさせた上で、呼び出し等は受け取れるようにすることがベストプラクティスです。  合理的な値にするべきです。  60秒が良いと考えています。

 アプリがバックグラウンドで接続を保つ時間を制限したい場合は、0.001fより大きい値に設定します。

 情報: Unityが定期的にUpdate()を呼び出さない場合も、PUNはサーバにACKを送信するために、「フォールバックスレッド」を実行しています。  これは、シーンやアセットを読み込む際やアプリがバックグラウンドにある間に接続を維持するために役立ちます。

 注意:  一部のプラットフォーム(iOS等)ではアプリがバックグラウンドにある間、接続を維持することができません。  これらの例では、この値による変更はありません。アプリはバックグラウンドですぐに接続を失います。

 一部のUnityバージョンのエクスポート(Android)でUnityのOnApplicationPause()コールバックが破損しています。  OnApplicationPause()がターゲットとするプラットフォームで期待するコールバックを取得していることを確認してください!  PhotonHandler.OnApplicationPause(bool pause)を確認して、実装を確認してください。 BackgroundTimeoutを設定するとPUNは接続を維持するのを止め、OnApplicationPause(true)が呼ばれた数秒後にBackgroundTimeoutとなります。  つまり:設定した時間の後、通常のタイムアウトが発生できるようになります。  アプリケーションは、再びアクティブになった時にタイムアウトを認知します。

 タイムアウトを処理するには次を実装:OnConnectionFail()(この場合は次を使用:DisconnectByServerTimeout)。

非アクティブのアプリ/接続をしばらく経ってからタイムアウトさせた上で、呼び出し等は受け取れるようにすることがベストプラクティスです。  合理的な値にするべきです。  60秒が良いと考えています。

 アプリがバックグラウンドで接続を保つ時間を制限したい場合は、0.001fより大きい値に設定します。

 情報: Unityが定期的にUpdate()を呼び出さない場合も、PUNはサーバにACKを送信するために、「フォールバックスレッド」を実行しています。  これは、シーンやアセットを読み込む際やアプリがバックグラウンドにある間に接続を維持するために役立ちます。

 注意:  一部のプラットフォーム(iOS等)ではアプリがバックグラウンドにある間、接続を維持することができません。  これらの例では、この値による変更はありません。アプリはバックグラウンドですぐに接続を失います。

 一部のUnityバージョンのエクスポート(Android)でUnityのOnApplicationPause()コールバックが破損しています。  OnApplicationPause()がターゲットとするプラットフォームで期待するコールバックを取得していることを確認してください!  PhotonHandler.OnApplicationPause(bool pause)を確認して、実装を確認してください。

bool PhotonNetwork.InstantiateInRoomOnly = true
static

trueなら、Instantiate(インスタンス作成)メソッドを呼ぶと、入室中かをチェックされます。Roomにいないなら失敗します。

Roomの外でインスタンス作成するのはいろいろ壊してしまう可能性が高くなります。 これを無効にするのは、自分が何をしているかわかっているときだけにしてください。

PhotonLogLevel PhotonNetwork.logLevel = PhotonLogLevel.ErrorsOnly
static

ネットワーク・ログのレベル。PUNが詳細な点までログに出力するかどうかを制御できます。

readonly int PhotonNetwork.MAX_VIEW_IDS = 1000
static

プレイヤー毎に(またはシーン毎に)割り当てられるPhotonViewの最大数。 基本説明 のトピック「制限事項」でこの制限を引き起こしている理由をご覧ください

int PhotonNetwork.maxConnections
static

Unity Networkingだけに使われます。PUNではPhotonNetwork.CreateRoomを使ってプレイヤー数を指定します。

EventCallback PhotonNetwork.OnEventCall
static

RaiseEventを扱うメソッドを“+=”を使って登録します。

eventCodeが200未満ならデリゲートに向けて転送されます。

RaiseEvent

ServerSettings PhotonNetwork.PhotonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.serverSettingsAssetFile, typeof(ServerSettings))
static

シリアライズされたサーバー設定。サーバー設定はセットアップ・ウィザードによって記述され、ConnectUsingSettingsで使われます。

float PhotonNetwork.precisionForFloatSynchronization = 0.01f
static

PhotonViewのOnSerialize/ObservingComponentを通して送信される前の、float数値間の最小の差。

float PhotonNetwork.precisionForQuaternionSynchronization = 1.0f
static

PhotonViewのOnSerialize/ObservingComponentを通して送信される前に、Rotationに変換が必要となる、最小の角度。

float PhotonNetwork.precisionForVectorSynchronization = 0.000099f
static

Vector2またはVector3(たとえばTransform、Rotation)の最小の差は、変換が必要です。その後でPhotonViewのOnSerialize/ObservingComponentを通して送信されます。

留意すべきは、これが正方形の大きさだということです。たとえばY軸で0.01変わっただけで送信しようとすると、0.01f*0.01f=0.0001fが使われます。floatの不正確さを改善するために、0.0001fの代わりに0.000099fを使っているのです。

Dictionary<string, GameObject> PhotonNetwork.PrefabCache = new Dictionary<string, GameObject>()
static

ゲームオブジェクトへの参照を、回数の多いインスタンス作成のために保持します(Resourcesフォルダーから読み込む代わりにメモリから読み込みます)。

キャッシュはいつでも好きなときに編集可能です。ただしInstantiate(インスタンス作成)に使っているときだけは例外的に編集不可です。メインスレッドだけで実行するのが一番効率的です。

HashSet<GameObject> PhotonNetwork.SendMonoMessageTargets
static

nullでないなら、これはPUNのSendMonoMessage()に呼ばれるGameObjectの(排他的な)一覧です。

PhotonNetworkingMessageで定義されたコールバックすべてに対して、PUNはSendMonoMessageを使います。 またPUNは、FindObjectsOfType()を呼ぶことで、PUNからのコールバックを受ける可能性のあるスクリプトとGameObjectをすべて探索します。

PUNのコールバックはそれほど頻度が多くはありません(ゲーム内ではプロパティ更新が最も頻度が高いです)。 しかしFindObjectsOfTypeは時間がかかる処理で、GameObjectの数が多いと パフォーマンスが落ちることがあります。

使うのは任意ですが、SendMonoMessageTargetは、ターゲットのGameObject一覧を供給するのに使われます。 これはFindObjectsOfType()をスキップしますが、コールバックが必要などんなGameObjectも 自身を一覧に追加しなくてはならないでしょう。

nullならデフォルトの動作は、MonoBehaviourを持つGameObjectそれぞれに、SendMessageすることです。

Type PhotonNetwork.SendMonoMessageTargetType = typeof(MonoBehaviour)
static

どのクラスがPUNのコールバック実装を含むのかを示します。

これが提供しているのは、実行時の速度を最適化するオプションです。
このTypeが特定のものであればあるほど、コールバックメソッドの影響をチェックするべきクラスが少なくなります。

bool PhotonNetwork.StartRpcsAsCoroutine = true
static

パフォーマンス上の問題になる可能性があるため、コルーチンとしてのRPCの開始を省略するために使用することができます。

bool PhotonNetwork.UsePrefabCache = true
static

trueなら、インスタンス作成時にPhotonNetwork.PrefabCacheを使い、ゲームオブジェクトをメモリ内に保持します(同じプレハブからのインスタンス作成が改善します)。

実行時にUsePrefabCacheをfalseに指定しても、PrefabCacheはクリアされず、その場では無視されます。 キャッシュをクリーンして編集することもできます。コメントを読んでください。

bool PhotonNetwork.UseRpcMonoBehaviourCache
static

有効なら、RPCを呼ぶ主体のMonoBehaviourはキャッシュされます。コストのかさむGetComponents<MonoBehaviour>()を呼ぶのを避けるためです。

RPCは、ターゲットのPhotonViewであるMonoBehaviourに呼ばれます。このMonoBehaviourはGetComponentで見つける必要があります。

これをtrueに指定すると、MonoBehaviour一覧はそれぞれPhotonViewにキャッシュされます。 photonView.RefreshRpcMonoBehaviourCache()を使って、要求に応じて、PhotonViewが持つ MonoBehaviour一覧を手動で更新できるのです(たとえば新規MonoBehaviourがネットワーク上のGameObjectに追加されたとき)。

const string PhotonNetwork.versionPUN = "1.67"

PUNのバージョン番号。GameVersionの中でも使われて、クライアントのバージョンを相互に分離します。

Property Documentation

AuthenticationValues PhotonNetwork.AuthValues
staticgetset

Photon(と独自サービス/コミュニティ)のカスタム認証のため、接続中に使われるユーザー認証値。 カスタム認証するのであれば、これを設定したあとでConnectを呼んでください。

認証に失敗すると、PUNはOnCustomAuthenticationFailed(string debugMsg)の実装を呼び出します。 PhotonNetworkingMessage.OnCustomAuthenticationFailedをご覧ください。

bool PhotonNetwork.autoCleanUpPlayerObjects
staticgetset

この設定では、退室するプレイヤーにインスタンス作成された、GameObjectとPhotonViewを、Room内のプレイヤーが破棄すべきかを決めます。

この設定はRoom単位で実行されます。Room作成後では変更できず、個々のクライアント設定を上書きします。

Room内でroom.AutoCleanUpが有効なら、PUNクライアントは退室時にプレイヤーのオブジェクトを破棄します。 これは手動で(RPCなどで)インスタンス化したGameObjectを含みます。 trueの場合、RPCと退室するプレイヤーがインスタンス作成したGameObjectとPhotonViewを、サーバーはクリーンアップして、 入室してくるプレイヤーがそれらを受け取らないようにします。

内部的には、Roomのカスタムプロパティとして保存されます。 デフォルトでは有効です。

bool PhotonNetwork.autoJoinLobby
staticgetset

PhotonServerSettingsアセットで設定されます。マスターサーバーに接続したとき、PhotonNetworkが「ロビー」に参加するべきかを決めます。

falseなら、マスターとの接続されたときOnConnectedToMaster()が呼ばれます。 OnJoinedLobby()は呼ばれません。 Room一覧は取得できないでしょう。 ロビーに接続(してRoom一覧を送信されること)がなくても、Roomを作成/入室(ランダムに)は可能です。

デフォルトではtrueです。

bool PhotonNetwork.automaticallySyncScene
staticgetset

Room内のクライアントがすべて、(PhotonNetwork.LoadLevelを使っている場合)Master Clientと同じレベルをロードするべきかを決めます。

読み込むレベルを同期するためには、Master ClientはPhotonNetwork.LoadLevelを使っている必要があります。 そうであれば、すべてのクライアントは、更新のときまたは入室したときに、新しいシーンを読み込むことになります。

内部的には、Roomのカスタムプロパティが読み込んだシーンにセットされます。 クライアントが読み込んでいるのがまだ同じシーンではなくても、即座にメッセージキューを 一時停止(PhotonNetwork.isMessageQueueRunning = false)して読み込みます。 シーンの読み込みが終わると、PUNは自動的にメッセージキューを有効に戻します。

bool PhotonNetwork.connected
staticget

Photonに最初に接続するまではfalse。オフラインモードでは、どのサーバーに接続中でもサーバー切り替え中でもtrueです。

bool PhotonNetwork.connectedAndReady
staticget

改善されたconnectedです。入室・退室などの操作を受け付ける準備ができたサーバーに接続しているときのみtrueです。

bool PhotonNetwork.connecting
staticget

Photonとの下層レベル接続が確立されるまでに、ConnectUsingSettings(または類似メソッド)を呼ぶとtrueです。

ConnectionState PhotonNetwork.connectionState
staticget

簡単な接続状態

PeerState PhotonNetwork.connectionStateDetailed
staticget

詳細な接続状態(PUNを関知しません。そのため、サーバー切り替え中は「回線切断」になることがあります)。

オフラインモードでは(Room作成/入室した後で)PeerState.Joinedを返します。それ以外ではConnectedToMasterを返します。

int PhotonNetwork.countOfPlayers
staticget

現在このアプリケーションをプレイしているユーザー数(マスターサーバーで5秒間隔で取得可能)。

int PhotonNetwork.countOfPlayersInRooms
staticget

あるRoomで、現在このアプリケーションをプレイしているユーザー数(マスターサーバーで5秒間隔で取得可能)。playerList.Countを使って、Room内のプレイヤー数を取得してください!

int PhotonNetwork.countOfPlayersOnMaster
staticget

現在、Roomで探せるプレイヤー数です(マスターサーバーで5秒間隔で取得可能)。

int PhotonNetwork.countOfRooms
staticget

現在使用されているRoom数(マスターサーバーで5秒間隔で取得可能)。

ロビー内で、一覧にあるRoom数はPhotonNetwork.GetRoomList().Lengthでチェック可能です。 PUN v1.25からは、この値はPhotonが(すべてのRoomを数えて)送信してくる統計イベントだけを元にしています。

bool PhotonNetwork.CrcCheckEnabled
staticgetset

Crcチェックが便利なのは、壊れたデータグラムによる問題を検知して回避できることです。接続していない状態で有効化できます。

bool PhotonNetwork.EnableLobbyStatistics
staticgetset

PhotonServerSettingsアセットで設定されます。マスターサーバーから有効なロビー一覧を取得可能にします。

Lobby Statistics(ロビー統計)が役に立つのは、ゲームが複数のロビーを使用し、 プレイヤーのそれぞれのロビーでの活動を知りたい場合です。

この値はPhotonServerSettingsに保存されます。

PhotonNetwork.LobbyStatisticsはマスターサーバーに接続したときに更新されます。 PunBehaviourコールバックも存在します。

List<FriendInfo> PhotonNetwork.Friends
staticgetset

フレンドと、そのオンライン状況と、彼らのいるRoomの読み込み専用リスト。FindFriendsコールで初期化されるまではnullです。

このリストを編集しないでください。 これはFindFriendsによって内部的に扱われるもので、してもよいのは値を読み込むことだけです。 FriendsListAgeの値によって、データがどれだけ過去のものか、ミリ秒単位でわかります。

この一覧を耐用期間よりも短い間隔で取得しないでください(10秒以上)。最もよいやりかたは、取得する一覧を短くなるよう維持することです。 たとえば、すべての一覧を一度だけ取得して、あとはオンラインのフレンドだけにしぼって更新情報を少なめに要求することもできます。 しばらく(たとえば1分間)の後、すべての一覧を再取得(してオンライン状況を更新)することができます。

int PhotonNetwork.FriendsListAge
staticget

フレンド一覧情報の古さ(ミリ秒)。フレンド一覧を取得する前は0です。

string PhotonNetwork.gameVersion
staticgetset

このビルドのバージョン文字列。非互換のクライアントと分離するために使うことができます。接続中に送信されます。

通常は設定し、(たとえばConnectUsingSettingsで)接続するときだけ送信されます。

bool PhotonNetwork.inRoom
staticget

Roomにいる(connectionStateDetailed == PeerState.Joined)ときtrueです。

多くのアクション(インスタンス作成や退室など)はRoom内だけで実行できます。 オフラインモードでもRoomに入室できます。

bool PhotonNetwork.insideLobby
staticget

このクライアントがロビーにいるときtrueです。

IPunCallbacks.OnReceivedRoomListUpdate()を実装して、Room一覧が有効になったか 更新されたときに通知を受け取れるようにしてください。

Roomに入室したとき、ロビーからは自動的に退出します。 ロビーはマスターサーバーにのみ存在します(一方、Roomはゲームサーバーが扱います)。

bool PhotonNetwork.isMasterClient
staticget

自分はMaster Clientであるかどうか。

bool PhotonNetwork.isMessageQueueRunning
staticgetset

受信イベント(RPCやインスタンス作成やその他受信するすべて)の配信を一時停止するのに使われます。

IsMessageQueueRunning == falseのとき、OnPhotonSerializeViewは呼ばれず、クライアントには何も送られません。 受信メッセージも、メッセージキューを再有効化するまではキューに追加されません。

この設定が便利なのは、最初にレベルを読み込んで、次にPhotonViewとRPCのデータを受信し続けようとしたときです。 クライアントは、受信パケットとRPC/イベントの応答を、受信し送信し続けます。 これは「ラグ」を増加させ、一時停止が長引き着信メッセージはすべてキューに貯まるだけという問題を引き起こす可能性があります。

bool PhotonNetwork.isNonMasterClientInRoom
staticget

Room(クライアント)内にいて、しかもそのRoomのMaster Clientではないときtrueです。

TypedLobby PhotonNetwork.lobby
staticgetset

PUNがロビーに入るか、Gameを作成するとき使われるロビー。

デフォルトのロビーは名前に空文字列を使います。 PUNはautoJoinLobbyがtrueのとき、マスターサーバーのロビーに入ります。 その設定で接続したりRoomから退室すると、PUNによって自動的にロビーに戻ります。

クライアントがロビーにいるか知るにはPhotonNetwork.insideLobbyをチェックしてください。 (マスターサーバーとロビー)

List<TypedLobbyInfo> PhotonNetwork.LobbyStatistics
staticget

trueを設定すると、マスターサーバーから、このアプリケーションで有効なロビーの情報を提供されます。

Lobby Statistics(ロビー統計)が役に立つのは、ゲームが複数のロビーを使用し、 プレイヤーのそれぞれのロビーでの活動を知りたい場合です。ロビー毎に「名前・タイプ・Room(とプレイヤー)数」を取得できます。

PhotonNetwork.LobbyStatisticsはマスターサーバーに接続したときに更新されます。 PunBehaviour.OnLobbyStatisticsUpdateコールバックもありますが、 これは(たとえば)UIを更新するために実装する必要があります。

Lobby Statistics(ロビー統計)はデフォルトでは有効ではありません。 プロジェクトのPhotonServerSettingsファイルで有効化します。

PhotonPlayer PhotonNetwork.masterClient
staticget

現在のRoomのMaster Client、または(Roomの外では)nullを返します。

(AIを動作させるなどの)判断を下す「権限のある」クライアント/プレイヤーとして扱われます。

現在のMaster ClientがRoomを出る(退室・回線切断)と、サーバーはすぐに別のプレイヤーに割り当てます。 現在のMaster Clientが(アプリケーションを閉じる・回線切断などで)タイムアウトすると、このクライアントに送信されるメッセージは、他クライアントには実質的に失われます。 タイムアウトになるには、Master Clientが無効になってから10秒間かかります。

IPunCallbacks.OnMasterClientSwitchedメソッドを実装して、Master Clientが切り替わったとき、呼ばれるようにしてください。

PhotonNetwork.SetMasterClientを使うと、誰か別のプレイヤー/クライアントに手動で切り替えることができます。

offlineMode == trueなら、このメソッドは常にPhotonNetwork.playerを返します。

int PhotonNetwork.MaxResendsBeforeDisconnect
staticgetset

ACKを受信できず回線切断の引き金になるより前に、定時性メッセージを再送信できる回数。デフォルトは5。

再送信回数を減らすと、回線切断のタイミングが短くなります。その一方、再送信回数を増加すると、ラグを増加することにつながります。最小: 3、最大: 10

bool PhotonNetwork.NetworkStatisticsEnabled
staticgetset

このクライアントの通信量統計を集計するのを有効にするか無効にするか。

クライアントについて問題に出くわしたら、通信量統計は解決策を探すためのよい開始点になります。 統計を有効にしたときだけ、GetVitalStatsを使用可能になります。

bool PhotonNetwork.offlineMode
staticgetset

オフラインモードによって、あなたのマルチプレイヤーゲームのコードをシングルプレイヤーゲームモードに再利用できるようになります。 trueなら、PhotonNetworkはなにも接続しないので、オーバーヘッドがない状態に近くなります。 最も便利なのは、RPCとPhotonNetwork.Instantiateを再利用できることです。

PhotonPlayer [] PhotonNetwork.otherPlayers
staticget

ローカルプレイヤーを含まない、他のプレイヤーリストです。

このリストはクライアントがRoomにいる間のみ有効です。 誰かが入退室した時には自動的に更新されます。

このリストはRoomにいるすべてのプレイヤーをリストするのに使えます。 それぞれのプレイヤーのPhotonPlayer.customPropertiesにアクセスできます。 (PhotonPlayer.SetCustomPropertiesで同期されます)

任意のオブジェクトを関連付けるためにPhotonPlayer.TagObjectを使うことができます。 これはネットワーク経由で同期はされません。

int PhotonNetwork.PacketLossByCrcCheck
staticget

CrcCheckEnabledがtrueのとき、正しいCRCチェックサムにならず破棄された着信パケットの数を数えます。

PhotonPlayer PhotonNetwork.player
staticget

ローカルのPhotonPlayerです。いつでも使用可能で、このプレイヤーを表します。 CustomPropertiesはRoom入室前でもセット可能で、問題なく同期されます。

PhotonPlayer [] PhotonNetwork.playerList
staticget

現在のRoomにいるすべてのプレイヤーリストです。ローカルプレイヤーも含みます。

このリストはクライアントがRoomにいる間のみ有効です。 誰かが入退室した時には自動的に更新されます。

このリストはRoomにいるすべてのプレイヤーをリストするのに使えます。 それぞれのプレイヤーのPhotonPlayer.customPropertiesにアクセスできます。 (PhotonPlayer.SetCustomPropertiesで同期されます)

任意のオブジェクトを関連付けるためにPhotonPlayer.TagObjectを使うことができます。 これはネットワーク経由で同期はされません。

string PhotonNetwork.playerName
staticgetset

プレイヤーのニックネームを、入室したRoom内の全員に同期します。これはPhotonPlayer.nameを設定します。

playerNameはただのニックネームで、一意である必要はなく、アカウントと共にバックアップする必要もありません。
この値はいつ(たとえば接続前に)設定しても、プレイしている相手の誰に対しても有効です。
プレイヤー名には PhotonPlayer.name を使ってアクセスしてください。
PhotonNetwork.otherPlayersは他プレイヤーの一覧です。含んでいるどれもが、リモートプレイヤーが設定したplayerNameです。

IPunPrefabPool PhotonNetwork.PrefabPool
staticgetset

Object Poolはインスタンス化されたオブジェクトインスタンスを保存して再利用できます。これはUnityデフォルトのInstantiateとDestroyメソッドを置き換えます。

GameObject Poolを使うには、IPunPrefabPoolを実装してこれに設定する必要があります。 Prefabは名前で区別されます。

int PhotonNetwork.QuickResends
staticgetset

ネットワーク上でデータ損失した場合、定時性メッセージが即再送されるのは3回までです。

定時性メッセージを1度以上損失した場合、後続の再送データは、 ネットワーク状態回復のために少し遅れます。
このオプションによって、2回目、3回目の再送をスピードアップさせます。 そうすることでタイムアウトを回避できるようにしますが、すきまをふさぐのに必要なスピードも増加します。
この変数をセットすると、PhotonNetwork.MaxResendsBeforeDisconnectの値が6から7に増加します。

int PhotonNetwork.ResentReliableCommands
staticget

(ACK受信前の、ローカルでの繰り返しタイミングのために)繰り返されたコマンドの数。

この値が大きく増加すると、状態がよくないことによるタイムアウトによる回線切断は十分あり得ます。

Room PhotonNetwork.room
staticget

現在入室しているRoom。どのRoomにも入室していないときはnullです。

int PhotonNetwork.sendRate
staticgetset

PhotonNetworkがパケットを、1秒に何度送信するかを定義します。 これを変更するなら、'sendRateOnSerialize'も変更することを忘れないでください。

パケットを減らすほど、オーバーヘッドも減りますが、遅延が増加します。 sendRateを50に設定すると、1秒に50パケットを作りあげます。(多いですね!) ターゲットプラットフォームを気をつけてください。モバイルネットワークは比較的遅く、信頼性も低くなります。

int PhotonNetwork.sendRateOnSerialize
staticgetset

OnPhotonSerializeがPhotonViewに、1秒何度呼ばれるかを定義します。

PhotonNetwork.sendRateと関連させて、この値を決めてください。OnPhotonSerializeは更新情報と、送信されるメッセージを作成します。 レートを低くすると負荷も低くできますが、ラグが増加するでしょう。

ServerConnection PhotonNetwork.Server
staticget

このクライアントが現在接続している、または接続しようとしているサーバー(の型)。

Photonは3つの異なる役割のサーバーを用います。Name Server、Master Server、Game Serverです。

string PhotonNetwork.ServerAddress
staticget

(マスターかゲームサーバーかを問わず)現在使用されているサーバーアドレス。

int PhotonNetwork.ServerTimestamp
staticget

現在のサーバーのミリ秒単位のタイムスタンプです。

これは同一Room内すべてのクライアントでアクションやイベントの同期に使えます。 このタイムスタンプはサーバーのEnvironment.TickCountをベースにしています。

これはオーバーフローして正の値から負の値になることも多いでしょう。 なので時刻の差分のみを使う場合は注意をしてください。

これはPhotonNetwork.timeをベースにしています。

double PhotonNetwork.time
staticget

Photonのネットワークタイムです。サーバーと同期されます。

v1.55 このタイム値はサーバーのEnvironment.TickCountに応じて変わります。サーバー毎に異なりますが、 Room内ではすべてのクライアントが同じ値を持ちます(Roomは1つのサーバーだけにあります)。 これはDateTimeではありません。

この値には注意してください: この値はどんな正の値からでも開始可能です。 この値は「ラップアラウンド」して、4294967.295から0に戻ります。 v1.55

int PhotonNetwork.unreliableCommandsLimit
staticgetset

チャンネル毎の未保証コマンドを、配信単位で制限するかどうかに使われます(一時停止後にチャンネルが多いと、未保証コマンドを多く引き起こす可能性があります)。

Online Documentation  -  Dashboard  -  Support Forum Exit Games GmbH