Photon Unity Networking  v1.67
Classes | Enumerations | Functions
Public API

Groups the most important classes that you need to understand early on. More...

Classes

interface  IPunObservable
 監視可能なスクリプトを正しく実装することを容易にするため、OnPhotonSerializeViewメソッドを定義します。 More...
 
interface  IPunCallbacks
 このインターフェースはPUNのコールバックメソッドの定義に使われます(OnPhotonSerializeViewを除く)。好ましくは、個別に実装します。 More...
 
class  Photon.PunBehaviour
 このクラスは、.photonViewと、PUNがコールできるすべてのコールバック/イベントを提供します。使いたいイベント/メソッドをoverride(上書き)してください。 More...
 
class  PhotonMessageInfo
 特定のメッセージやRPCまたは更新についての情報のためのコンテナクラス。 More...
 
class  PhotonStream
 このコンテナはOnPhotonSerializeView()で使われ、PhotonViewの受信データ、または送信データのいずれかを提供します。 More...
 
class  PhotonNetwork
 PhotonNetworkプラグインを使うためのメインクラスです。 このクラスは静的クラスです。 More...
 
class  PhotonPlayer
 Room̔Cӂ1vC[ɂ‚Ă܂Ƃ߂Ă܂BvC[́iRoomŁjactorIDŋʂ܂B More...
 
class  PhotonView
 NetworkViewuAPUÑlbg[N̂߂̃NXBNetworkViewƓ悤ɎgpĂB More...
 
class  Room
 このクラスは、PUNで入室できる(入室した)Roomをそのまま反映します。 プロパティは、RoomInfoのプロパティとは違い、設定可能です。また「自分の」Roomを閉めたり隠すことができます。 More...
 
class  RoomInfo
 一覧と入室に必要な情報のみを持つ、簡略化されたRoom。ロビー内でRoom一覧に使用されます。 プロパティ(open, maxPlayersなど)は設定できません。 More...
 

Enumerations

enum  PhotonNetworkingMessage {
  PhotonNetworkingMessage.OnConnectedToPhoton, PhotonNetworkingMessage.OnLeftRoom, PhotonNetworkingMessage.OnMasterClientSwitched, PhotonNetworkingMessage.OnPhotonCreateRoomFailed,
  PhotonNetworkingMessage.OnPhotonJoinRoomFailed, PhotonNetworkingMessage.OnCreatedRoom, PhotonNetworkingMessage.OnJoinedLobby, PhotonNetworkingMessage.OnLeftLobby,
  PhotonNetworkingMessage.OnDisconnectedFromPhoton, PhotonNetworkingMessage.OnConnectionFail, PhotonNetworkingMessage.OnFailedToConnectToPhoton, PhotonNetworkingMessage.OnReceivedRoomListUpdate,
  PhotonNetworkingMessage.OnJoinedRoom, PhotonNetworkingMessage.OnPhotonPlayerConnected, PhotonNetworkingMessage.OnPhotonPlayerDisconnected, PhotonNetworkingMessage.OnPhotonRandomJoinFailed,
  PhotonNetworkingMessage.OnConnectedToMaster, PhotonNetworkingMessage.OnPhotonSerializeView, PhotonNetworkingMessage.OnPhotonInstantiate, PhotonNetworkingMessage.OnPhotonMaxCccuReached,
  PhotonNetworkingMessage.OnPhotonCustomRoomPropertiesChanged, PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, PhotonNetworkingMessage.OnUpdatedFriendList, PhotonNetworkingMessage.OnCustomAuthenticationFailed,
  PhotonNetworkingMessage.OnCustomAuthenticationResponse, PhotonNetworkingMessage.OnWebRpcResponse, PhotonNetworkingMessage.OnOwnershipRequest, PhotonNetworkingMessage.OnLobbyStatisticsUpdate
}
 この列挙型はMonoMessagesのひとまとまりを定義したものです。Photon Unity Networking(PUN)はこれをコールバックに使用しています。PunBehaviourによって実装されます。 More...
 
enum  PhotonLogLevel { PhotonLogLevel.ErrorsOnly, PhotonLogLevel.Informational, PhotonLogLevel.Full }
 PUNのクラスで生成されたログの出力レベルを決めるのに使われます。errorsか、info(やや多い)か、fullのいずれかです。 More...
 
enum  PhotonTargets {
  PhotonTargets.All, PhotonTargets.Others, PhotonTargets.MasterClient, PhotonTargets.AllBuffered,
  PhotonTargets.OthersBuffered, PhotonTargets.AllViaServer, PhotonTargets.AllBufferedViaServer
}
 RPCのための「ターゲット」オプションを列挙したものです。これはどのリモートクライアントが自分のRPCコールを受信するかを決めます。 More...
 
enum  PeerState {
  PeerState.Uninitialized, PeerState.PeerCreated, PeerState.Queued, PeerState.Authenticated,
  PeerState.JoinedLobby, PeerState.DisconnectingFromMasterserver, PeerState.ConnectingToGameserver, PeerState.ConnectedToGameserver,
  PeerState.Joining, PeerState.Joined, PeerState.Leaving, PeerState.DisconnectingFromGameserver,
  PeerState.ConnectingToMasterserver, PeerState.QueuedComingFromGameserver, PeerState.Disconnecting, PeerState.Disconnected,
  PeerState.ConnectedToMaster, PeerState.ConnectingToNameServer, PeerState.ConnectedToNameServer, PeerState.DisconnectingFromNameServer,
  PeerState.Authenticating
}
 詳細な接続/ネットワークPeer状況。 PUNは「内部的に」負荷分散と認証ワークフローを実装しています。 そのため、いくつかの状態は自動的にその次の状態に移行されます。 これらの状態は「(will-change)」とコメントされています。 More...
 
enum  DisconnectCause {
  DisconnectCause.ExceptionOnConnect = StatusCode.ExceptionOnConnect, DisconnectCause.SecurityExceptionOnConnect = StatusCode.SecurityExceptionOnConnect, DisconnectCause.TimeoutDisconnect = StatusCode.TimeoutDisconnect, DisconnectCause.DisconnectByClientTimeout = StatusCode.TimeoutDisconnect,
  DisconnectCause.InternalReceiveException = StatusCode.ExceptionOnReceive, DisconnectCause.DisconnectByServer = StatusCode.DisconnectByServer, DisconnectCause.DisconnectByServerTimeout = StatusCode.DisconnectByServer, DisconnectCause.DisconnectByServerLogic = StatusCode.DisconnectByServerLogic,
  DisconnectCause.DisconnectByServerUserLimit = StatusCode.DisconnectByServerUserLimit, DisconnectCause.Exception = StatusCode.Exception, DisconnectCause.InvalidRegion = ErrorCode.InvalidRegion, DisconnectCause.MaxCcuReached = ErrorCode.MaxCcuReached,
  DisconnectCause.InvalidAuthentication = ErrorCode.InvalidAuthentication, DisconnectCause.AuthenticationTicketExpired = 32753
}
 切断の原因の要約です。OnConnectionFailとOnFailedToConnectToPhotonで使用されます。 More...
 

Functions

void IPunObservable.OnPhotonSerializeView (PhotonStream stream, PhotonMessageInfo info)
 PUNによって1秒あたり数回呼ばれます。それにより、PhotonViewの同期データの読み書きがスクリプトで可能になります。 More...
 

Detailed Description

Groups the most important classes that you need to understand early on.

Enumeration Type Documentation

切断の原因の要約です。OnConnectionFailとOnFailedToConnectToPhotonで使用されます。

ExitGames.Client.Photon.StatusCodeからステータスコードを展開します。

See also
PhotonNetworkingMessage
Enumerator
ExceptionOnConnect 

接続を確立できませんでした。 ありうる理由: ローカルサーバーが稼働していません。

SecurityExceptionOnConnect 

クライアントまたはサーバーのセキュリティ設定が、接続を許可していません(remarksをご覧ください)。

よくある理由はブラウザークライアントが「クロスドメイン」ファイルをサーバーから読み込むことです。 そのファイルが取得できないか、クライアントに接続をするよう設定できないなら、この例外が投げられます。 Photonは通常Unity向けのこのクロスドメインファイルを提供しています。 もし失敗したのなら読んでください: http://doc.photonengine.com/ja/onpremise/v3/reference/policy-files

TimeoutDisconnect 

接続タイムアウト ありうる理由: リモートサーバーが稼働していないか、要求したポートが(ルーターかファイアウォールによって)ブロックされています。

DisconnectByClientTimeout 

クライアントによるタイムアウト切断(ACKが長い時間帰ってこないため)。

InternalReceiveException 

受信ループの例外 ありうる理由: ソケットの問題

DisconnectByServer 

サーバーが意図的にこのクライアントを切断しました。

DisconnectByServerTimeout 

サーバーのタイムアウト切断(ACKが長い時間帰ってこないため)。

DisconnectByServerLogic 

サーバーが意図的にこのクライアントを切断しました。 ありうる理由: サーバーの送信バッファーに空きがありません(クライアントへのデータが多すぎます)

DisconnectByServerUserLimit 

サーバーが意図的にこのクライアントを切断しました。 ありうる理由: サーバーの同時接続数の最大値に到達しました。

Exception 

何らかの例外により切断しました。

InvalidRegion 

(32756) Photon Cloud上で認証が失敗しました。アプリケーションのサブスクリプション契約で、特定リージョンを使う許可がないためです。

MaxCcuReached 

(32757) Photon Cloud上で認証が失敗しました。アプリケーションのサブスクリプション契約で決まっている、同時接続数(CCU)の最大値に到達したためです。

InvalidAuthentication 

(32767) Photon Cloudが送信されたAppIdを拒否しました。ダッシュボードを確認して、使用したAppIdが正しいか確認してください。

AuthenticationTicketExpired 

(32753) 認証チケットが期限切れです。再接続してください(それには、未使用のチケットを入手して認証する処理が含まれます)。

enum PeerState

詳細な接続/ネットワークPeer状況。 PUNは「内部的に」負荷分散と認証ワークフローを実装しています。 そのため、いくつかの状態は自動的にその次の状態に移行されます。 これらの状態は「(will-change)」とコメントされています。

Enumerator
Uninitialized 

動作していません。初期化の前に設定するときと最初にだけ使います。

PeerCreated 

作成されて接続できます。

Queued 

現在では使われていません。

Authenticated 

アプリケーションが認証されます。PUNは通常ロビーに入ります。

(will-change) AutoJoinLobbyがfalseでない場合のみです。

JoinedLobby 

クライアントがMaster Serverのロビー内にいて、Room一覧を取得します。

プレイするために、JoinかCreateかJoinRandomを実行してRoomに入室してください。

DisconnectingFromMasterserver 

回線切断します。

(will-change)

ConnectingToGameserver 

ゲームサーバーと接続します(Room作成/入室してプレイするため)

(will-change)

ConnectedToGameserver 

接続中状態に似ていますが、ゲームサーバー上です。Room入室/作成のプロセスの途中です。

(will-change)

Joining 

(ゲームサーバー上で)Room入室/作成のプロセス中です。

(will-change)

Joined 

Room入室/作成シーケンスの最後の状態です。このクライアントは今やイベントをやりとりしたり他プレイヤーにRPCをコールしたりできます。

Leaving 

Roomを退室します。

(will-change)

DisconnectingFromGameserver 

ゲームサーバーを出て、マスターサーバーに再接続しようとするワークフローです。

(will-change)

ConnectingToMasterserver 

マスターサーバーに接続してアプリの暗号化と認証を確立しようとするワークフローです。

(will-change)

QueuedComingFromGameserver 

同じく待ち行列(キュー)で待ち状態ですが、ゲームサーバーから来ています。

(will-change)

Disconnecting 

PUNが回線切断中です。このあとDisconnectedになります。

(will-change)

Disconnected 

未接続状態です。接続準備ができています。PeerCreatedに似ています。

ConnectedToMaster 

ロビーに入らずに(AutoJoinLobbyがfalseで)マスターに接続する最後の状態です。

ConnectingToNameServer 

クライアントがNameServerに接続します。このプロセスは下層レベルの接続と暗号化設定も含みます。完了すると、状態はConnectedToNameServerになります。

ConnectedToNameServer 

クライアントはNameServerと接続し、暗号化も確立されています。OpGetRegionsまたはConnectToRegionMasterを呼び出すときです。

DisconnectingFromNameServer 

Photon NameServerから回線切断されたときです。

(will-change)

Authenticating 

Photon Serverに接続したとき、この状態は何か処理を呼ぶことが可能になるまでの、中間状態です。

(will-change)

PUNのクラスで生成されたログの出力レベルを決めるのに使われます。errorsか、info(やや多い)か、fullのいずれかです。

Enumerator
ErrorsOnly 

エラーだけを表示します。出力は最小限です。注記: そのうちのいくつかは想定しなくてはならない「実行時エラー」かもしれません。

Informational 

いくつかの処理の流れ・コールと結果をログ記録します。

Full 

利用可能なログはすべてconsole/logにログ記録します。デバッグ時にのみ使用します。

この列挙型はMonoMessagesのひとまとまりを定義したものです。Photon Unity Networking(PUN)はこれをコールバックに使用しています。PunBehaviourによって実装されます。

Unityの"Update()"によく似ていますが、PUNは特定の状況でこれらのメソッドを呼びます。 よくあるのは、ネットワーク作業が完了(例:Roomに入室)したときに、このメソッドが呼ばれることです。

それらのメソッドはすべてこの列挙で定義・記述されて、PunBehaviourに実装されます (そうすることで、上書きして実装することが簡単になります)。

どのエントリーもそのようなメソッドです。どの説明も、PUNでどう使われるかを説明しています。

エントリー毎のremarksを確認してください。いくつかのメソッドにはオプションのパラメーターがあるからです。

Enumerator
OnConnectedToPhoton 

サーバーを使用可能になる前で最初の接続が確立したとき、呼ばれます。OnJoinedLobby()またはOnConnectedToMaster()はPUNが準備完了したときに呼ばれます。

このコールバックが役に立つのは、サーバーに(技術的に)接続できるか確認中のときだけです。 ほとんどの場合、OnFailedToConnectToPhoton()とOnDisconnectedFromPhoton()を実装すれば十分です。

OnJoinedLobby()またはOnConnectedToMaster()はPUNが準備完了したときに呼ばれます。

これが呼ばれると、下層レベルの接続が確立され、PUNはAppIdやユーザーなどをバックグラウンドで送信します。 マスターサーバーからゲームサーバーへの移行のときは、これは呼ばれません。

例: void OnConnectedToPhoton() { ... }

OnLeftRoom 

ローカルのユーザー/クライアントがRoomから退室したとき、呼ばれます。

Roomを退室すると、PUNはそのプレイヤーをマスターサーバーに戻します。 ロビーを使うかRoomに入室/作成できるようになる前に、OnJoinedLobby()またはOnConnectedToMaster()は再度呼ばれます。

例: void OnLeftRoom() { ... }

OnMasterClientSwitched 

現在のMaster Clientが退室して、新規Master Clientに切り替わった後で呼ばれます。

このクライアントがRoomに入室していると、呼ばれません。 このメソッドが呼ばれた時、以前のMaster Clientはまだプレイヤーリストに残っています。

例: void OnMasterClientSwitched(PhotonPlayer newMasterClient) { ... }

OnPhotonCreateRoomFailed 

CreateRoom()コールが失敗すると、呼ばれます。オプションのパラメーターで、ErrorCodeとメッセージを受け取ることができます。

もっともよくある理由は、Room名がすでに使われていた(他のクライアントが自分より早かった)場合です。 もしPhotonNetwork.logLevel >= PhotonLogLevel.Informationalなら、PUNはいくつかの情報をログに記録します。

例: void OnPhotonCreateRoomFailed() { ... }

例: void OnPhotonCreateRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] はshort型のエラーコード。codeAndMsg[1]はstring型のデバッグメッセージ。 }

OnPhotonJoinRoomFailed 

JoinRoom()が失敗すると、呼ばれます。オプションのパラメーターで、ErrorCodeとメッセージを受け取ることができます。

もっともよくある理由は、Roomが存在しないか、Roomが満室(他のクライアントが自分より早かった)の場合です。 もしPhotonNetwork.logLevel >= PhotonLogLevel.Informationalなら、PUNはいくつかの情報をログに記録します。

例: void OnPhotonJoinRoomFailed() { ... }

例: void OnPhotonJoinRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] はshort型のエラーコード。codeAndMsg[1]はstring型のデバッグメッセージ。 }

OnCreatedRoom 

このクライアントがRoomを作成して入室したとき、呼ばれます。OnJoinedRoom()も呼ばれます。

Roomを作成したクライアント上でだけ、このコールバックは呼ばれます(PhotonNetwork.CreateRoomを見てください)。

どのクライアントも接続終了(または回線切断)するかもしれないので、 Roomの作成者がOnCreatedRoomを実行しない可能性はあります。

特定のRoomプロパティまたは「start signal」が必要なら、OnMasterClientSwitched()を実装して 新規Master ClientにRoom状況をチェックしてもらうほうが安全です。

例: void OnCreatedRoom() { ... }

OnJoinedLobby 

マスターサーバーのロビーに入ったとき、呼ばれます。実際にRoom一覧が更新されると、OnReceivedRoomListUpdate()が呼ばれます。

注記: PhotonNetwork.autoJoinLobbyがfalseのときは, OnConnectedToMaster()が呼ばれ、Room一覧は使用可能になりません。

ロビーにいる間は、Room一覧は、特定の間隔(これを変更はできません)で自動的に更新されます。 Room一覧が使用可能になるのは、OnJoinedLobby()の後、さらにOnReceivedRoomListUpdate()が呼ばれたときです。

例: void OnJoinedLobby() { ... }

OnLeftLobby 

ロビーを出たときに、呼ばれます。

ロビーを出ると、CreateRoomJoinRandomRoom は自動的にデフォルトロビーを参照します。

例: void OnLeftLobby() { ... }

OnDisconnectedFromPhoton 

Photon Serverから切断した後、呼ばれます。

場合により、OnDisconnectedFromPhotonが呼ばれる前に、ほかのコールバックが呼ばれることがあります。 例: OnConnectionFail()OnFailedToConnectToPhoton()

例: void OnDisconnectedFromPhoton() { ... }

OnConnectionFail 

何かの原因で(接続が確立した後)接続失敗したとき、呼ばれます。その後でOnDisconnectedFromPhoton()も呼ばれます。

そもそもサーバーに到達できないときは、これの代わりに、OnFailedToConnectToPhotonが呼ばれます。 エラーの原因はDisconnectCauseに示されています。

例: void OnConnectionFail(DisconnectCause cause) { ... }

OnFailedToConnectToPhoton 

接続自体は確立していますが、その後Photon Serverへの接続コールが失敗したとき、呼ばれます。その後OnDisconnectedFromPhoton()も呼ばれます。

Photon Serverへの接続が最初に確立されたときにだけ、OnConnectionFailは呼ばれます。 エラーの原因はDisconnectCauseに示されています。

例: void OnFailedToConnectToPhoton(DisconnectCause cause) { ... }

OnReceivedRoomListUpdate 

マスターサーバーのロビーにいる(PhotonNetwork.insideLobby)とき、Room一覧が更新されると、呼ばれます。

PUNはRoom一覧をPhotonNetwork.GetRoomList()で提供しています。
RoomInfoのどのアイテムも、独自プロパティ(Room作成時にロビーの一覧として提供されます)を含む可能性があります。

どのタイプのロビーもRoom一覧をクライアントに提供するわけではありません。いくつかのロビーはクライアントに発信しないタイプで、サーバー側のマッチメイキングに特化されています。

例: void OnReceivedRoomListUpdate() { ... }

OnJoinedRoom 

(Room作成または入室で)Roomに入ったときに、呼ばれます。(Master Clientも含む)すべてのクライアントが呼ばれます。

このメソッドの一般的な用途は、プレイヤーキャラクターのインスタンスを作成することです。 もし対戦が「有効な状態」で開始されるなら、その代わりに、ユーザーがボタンを押したかタイマーで引き起こされたPunRPCを呼ぶことができます。

これが呼ばれると、PhotonNetwork.playerListを通して、存在するプレイヤーにアクセスできるようになっています。 カスタムプロパティも、すでにRoom.customPropertiesとして使用可能になっています。

例: void OnJoinedRoom() { ... }

OnPhotonPlayerConnected 

リモートプレイヤーがRoomに入室してきたら、呼ばれます。このPhotonPlayerはすでにこのときプレイヤーリストには追加済みです。

もしゲームを始めるのにある程度のプレイヤー数が必要なら、このコールバックで、 Room.playerCountを確認してゲーム開始できるかわかるので便利です。

例: void OnPhotonPlayerConnected(PhotonPlayer newPlayer) { ... }

OnPhotonPlayerDisconnected 

リモートプレイヤーがこのRoomを退室したときに、呼ばれます。このPhotonPlayerはすでにこのときプレイヤーリストから削除済みです。

クライアントがPhotonNetwork.leaveRoomを呼ぶと、PUNはこのメソッドを、残ったクライアントに対して呼びます。 リモートクライアントが回線切断したか接続終了すると、タイムアウトの数秒後に、 このコールバックが実行されます。

例: void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) { ... }

OnPhotonRandomJoinFailed 

JoinRandom()コールが失敗した後で、呼ばれます。オプションのパラメーターで、ErrorCodeとメッセージを受け取ることができます。

もっともよくある理由は、すべてのRoomが満室、または利用可能なRoomがないことです。 複数ロビーを(JoinLobbyまたはTypedLobbyを通して)使っているなら、別のロビーにはマッチするRoomがあるかもしれません。 もしPhotonNetwork.logLevel >= PhotonLogLevel.Informationalなら、PUNはいくつかの情報をログに記録します。

例: void OnPhotonRandomJoinFailed() { ... }

例: void OnPhotonRandomJoinFailed(object[] codeAndMsg) { // codeAndMsg[0] はshort型のエラーコード。codeAndMsg[1]はstring型のデバッグメッセージ。 }

OnConnectedToMaster 

マスターへの接続が確立され認証された後、PhotonNetwork.autoJoinLobbyがfalseの場合に、呼ばれます。

もしPhotonNetwork.autoJoinLobbyをtrueの場合は、OnJoinedLobby()がこれの代わりに呼ばれます。

ロビーにいなくてもRoomの入室や作成は可能です。そのときはデフォルトロビーが使われます。 有効なRoom一覧は、PhotonNetwork.joinLobbyでロビーに入らない限り、取得できません。

例: void OnConnectedToMaster() { ... }

OnPhotonSerializeView 

1つのPhotonViewで定期的に同期するデータを実装してください。このメソッドはPhotonViewに監視されているとき「ネットワーク更新」のたびに、呼ばれます。

このメソッドは、PhotonViewのObservedコンポーネントとして割り当てられたスクリプトの中で呼ばれます。 PhotonNetwork.sendRateOnSerializeはこのメソッドがよばれる頻度に影響します。 PhotonNetwork.sendRateはこのクライアントがパケットを送信する頻度に影響します。

このメソッドを実装すると、1つのPhotonViewが定期的に同期するデータをカスタマイズできます。 送信される内容と、送信したデータが受信側クライアントでどう使われるか、をコードで定義できます。

ほかのコールバックと異なり、OnPhotonSerializeViewが呼ばれるのは、 (PhotonView.observedとして)PhotonViewに割り当てられているときだけです。

このメソッドを役立てるには、PhotonStreamが不可欠です。それが「書き込みモード」だと クライアントに対してPhotonViewをコントロールします(PhotonStream.isWriting == true)。 「読み込みモード」だとリモートクライアントに対して、コントロール中のクライアントが送信したものを受け取ります。

もしストリームに何か値を書き込むことをスキップしたら、PUNは更新をスキップします。注意して使えば、 帯域幅とメッセージ(これらはRoomあたり/1秒あたりの制限があります)を削減できます。

留意いただきたいのは、OnPhotonSerializeViewは、送信者が何も更新を送信しないなら リモートクライアントに対して呼ばれることはない、ということです。これは「1秒にX回Update()を呼ぶ」のようには使えません。

例: void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { ... }
</remarks>  
OnPhotonInstantiate 

PhotonNetwork.Instantiateを使ってインスタンスを作成されたGameObject(とその子)のスクリプトすべてに対して、呼ばれます。

PhotonMessageInfoパラメーターは誰がオブジェクトを作成したか、そしていつ(PhotonNetworking.timeを元にしません)作成したかの情報を提供します。

例: void OnPhotonInstantiate(PhotonMessageInfo info) { ... }

OnPhotonMaxCccuReached 

同時に接続できるユーザー数の制限に(一時的に)到達したため、サーバーから拒否されて切断されたときに、呼ばれます。

これが起こると、ユーザーはあとで再接続するかもしれません。そのクライアントは回線を切断されているので、OnPhotonMaxCcuReached()でRoom作成/入室はできません。 Photon Serverをご利用の場合は新規ライセンスを取得して、またPhoton Cloudをご利用の場合は契約を変更して、CCU制限値を上げることができます。 Photon Cloudでは、ダッシュボード(Webページ)でCCUを見ることができます。

例: void OnPhotonMaxCccuReached() { ... }

OnPhotonCustomRoomPropertiesChanged 

Roomのカスタムプロパティが変更されたとき、呼ばれます。propertiesThatChangedは、Room.SetCustomPropertiesを通して設定されたものすべてを含みます。

v1.25から、このメソッドは1パラメーターになりました: Hashtable propertiesThatChanged. プロパティ変更はRoom.SetCustomPropertiesによって実行されなければなりません。これはローカルのコールバックにも影響します。

例: void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) { ... }

OnPhotonPlayerPropertiesChanged 

プレイヤーのカスタムプロパティが変更されたとき、呼ばれます。プレイヤーと変更されたプロパティはobject[]として渡されます。

v1.25から、このメソッドは1パラメーターになりました: object[] playerAndUpdatedProps これは2つのエントリーがあります。
[0] は影響を受けたPhotonPlayer。
[1] は変更されたプロパティのHashtable。

object[]を使う理由は、UnityのGameObject.SendMessageの制限のためです。(これは1つだけしかオプションのパラメーターを持てないのです)。

プロパティ変更はRoom.SetCustomPropertiesによって実行されなければなりません。これはローカルのコールバックにも影響します。

例:

    void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
        PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
        Hashtable props = playerAndUpdatedProps[1] as Hashtable;
        //...
    }
OnUpdatedFriendList 

サーバーが、FindFriendsのリクエストにレスポンスを返して、PhotonNetwork.Friendsを更新したとき、呼ばれます。

フレンド一覧はPhotonNetwork.Friendsで取得できます。それで得られる情報は、 名前一覧・オンライン状況・入室しているRoom(入室している場合)です。

例: void OnUpdatedFriendList() { ... }

OnCustomAuthenticationFailed 

カスタム認証が失敗したとき、呼ばれます。その後切断されます。

独自認証が失敗する理由は、ユーザーが誤ったトークン/シークレットを入力した場合などです。 認証が成功すれば、このメソッドは呼ばれません。OnJoinedLobby()またはOnConnectedToMaster()を(通常時のため)実装してください。

ゲーム開発中は、サーバー側のまちがった設定のせいで失敗しているかもしれません。 その場合、debugMessageをログに記録しておくのはたいへん重要です。

カスタム認証サービスを(ダッシュボードで) アプリケーションに設定しない限りは、これは呼ばれません。

例: void OnCustomAuthenticationFailed(string debugMessage) { ... }

OnCustomAuthenticationResponse 

カスタム認証サービスが追加のデータを返したときに、呼ばれます。

カスタム認証サービスはそのレスポンスに独自のデータを含めることができます。 独自のデータがある時、そのデータはDictionaryとしてこのコールバックで参照できます。 データのキーが文字列であるべきで、値は文字列または数値となります。(JSONによる) 値の型が期待するものであるかどうかは、確認する必要があります。数値は(現在のところ)int64です。

例: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... }

https://doc.photonengine.com/ja/realtime/current/reference/custom-authentication

OnWebRpcResponse 

WebRPCへのレスポンスが有効なときに、PUNに呼ばれます。PhotonNetwork.WebRPCをご覧ください。

重要: Photonが自分のWebサービスに到達できていれば、response.ReturnCodeは0です。 レスポンスの内容は、自分のWebサービスが送信したものです。そこからWebResponseインスタンスを作成することができます。 例: WebRpcResponse webResponse = new WebRpcResponse(operationResponse);

注釈: OperationResponseクラスは、下記のnamespaceにいる必要があります: using ExitGames.Client.Photon; // OperationResponse(と他のクラス)を含みます

PhotonのOperationResponse.ReturnCodeは: 0 は "OK" -3 は "Webサービスが設定されていない" (Dashboard / WebHooksを見てください) -5 は "WebサービスにRPC path/nameがない" (少なくともAzureでは)

例: void OnWebRpcResponse(OperationResponse response) { ... }

OnOwnershipRequest 

別のプレイヤーが自分(現在の所有者)のPhotonViewの所有権をリクエストしたとき、呼ばれます。

viewAndPlayerパラメーターが含むのは:

PhotonView view = viewAndPlayer[0] as PhotonView;

PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer;

void OnOwnershipRequest(object[] viewAndPlayer) {} //

OnLobbyStatisticsUpdate 

Master ServerがLobby Statisticsの更新を送信してPhotonNetwork.LobbyStatisticsを更新したときに、呼ばれます。

このコールバックには2つの前提条件があります: このクライアントが接続する前に、EnableLobbyStatisticsがtrueと設定されていること。 クライアントは、ロビーについての情報を提供しているMaster Serverに接続していること。

RPCのための「ターゲット」オプションを列挙したものです。これはどのリモートクライアントが自分のRPCコールを受信するかを決めます。

Enumerator
All 

RPCをその他全員に送信して、このクライアントで即座に実行します。後で入ってきたプレイヤーはこのRPCを実行しません。

Others 

RPCをその他全員に送信します。このクライアントはRPCを実行しません。後で入ってきたプレイヤーはこのRPCを実行しません。

MasterClient 

RPCをMasterClientだけに送信します。注記: MasterClientはRPCを実行する前に切断され、RPCが欠落する原因になるかもしれません。

AllBuffered 

RPCをその他全員に送信して、このクライアントで即座に実行します。新規プレイヤーは、Roomに入室するとき、RPCがバッファリングされているので、(このクライアントが退室するまでは)このRPCを受信します。

OthersBuffered 

RPCを全員に送信します。このクライアントはRPCを実行しません。新規プレイヤーは、Roomに入室するとき、RPCがバッファリングされているので、(このクライアントが退室するまでは)このRPCを受信します。

AllViaServer 

RPCをサーバーを介して(このクライアントも含めた)全員に送信します。

このクライアントは、他のクライアントと同じように、サーバーからRPCを受信したとき、RPCを実行します。 利点: サーバーのRPC送信指示は、どのクライアントに対しても同じになります。

AllBufferedViaServer 

>RPCをサーバーを介して、後から入ってくるプレイヤーのためにバッファリングした上で、(このクライアントも含めた)全員に送信します。

このクライアントは、他のクライアントと同じように、サーバーからRPCを受信したとき、RPCを実行します。 利点: サーバーのRPC送信指示は、どのクライアントに対しても同じになります。

Function Documentation

void IPunObservable.OnPhotonSerializeView ( PhotonStream  stream,
PhotonMessageInfo  info 
)

PUNによって1秒あたり数回呼ばれます。それにより、PhotonViewの同期データの読み書きがスクリプトで可能になります。

このメソッドは、PhotonViewのObservedコンポーネントとして割り当てられたスクリプトから呼ばれます。 PhotonNetwork.sendRateOnSerializeはこのメソッドの呼ばれる頻度に影響します。 PhotonNetwork.sendRateはこのクライアントがパケットを送信する頻度に影響します。

このメソッドを実装すると、1つのPhotonViewが定期的に同期するデータをカスタマイズできます。 送信される内容と、送信したデータが受信側クライアントでどう使われるか、をコードで定義できます。

ほかのコールバックと異なり、OnPhotonSerializeViewが呼ばれるのは、 (PhotonView.observedとして)PhotonViewに割り当てられているときだけです。

このメソッドを役立てるには、PhotonStreamが不可欠です。それが「書き込みモード」だと クライアントに対してPhotonViewをコントロールします(PhotonStream.isWriting == true)。 「読み込みモード」だとリモートクライアントに対して、コントロール中のクライアントが送信したものを受け取ります。

もしストリームに何か値を書き込むことをスキップしたら、PUNは更新をスキップします。注意して使えば、 帯域幅とメッセージ(これらはRoomあたり/1秒あたりの制限があります)を削減できます。

留意いただきたいのは、OnPhotonSerializeViewは、送信者が何も更新を送信しないなら リモートクライアントに対して呼ばれることはない、ということです。これは「1秒にX回Update()を呼ぶ」のようには使えません。

Implemented in PhotonTransformView.

Online Documentation  -  Dashboard  -  Support Forum Exit Games GmbH