オフラインモード
オフラインモードは、マルチプレイヤーコードをシングルプレイヤーゲームモードで再利用できるようにする機能です。
シングルプレイヤーでもっとも需要が高い機能は、RPCの送信とPhotonNetwork.Instantiate
の使用です。
オフラインモードの主な目的は、接続していない場合にPhotonNetwork機能を使用して、null参照やその他のエラーを非有効化することです。
ゲームの設定などで、シングルプレイヤーゲームを実行している点の履歴を把握したい場合などがあると思います。
ゲーム実行時にすべてのコードが再利用可能となります。
PhotonNetworkが誤りと意図的な動作を区別するため、オフラインモードを手動で有効化する必要があります。
この機能の有効化は、非常に簡単です。
C#
PhotonNetwork.offlineMode = true;
一旦trueに設定されると、PhotonはコールOnConnectedToMaster() とともにコールバックをおこないます。その後ルームを作成可能になり、このルームはオフラインになります。
接続やエラーを生成することなく、特定のマルチプレイヤーメソッドを再利用できます。
また、顕著な負荷はありません。
以下は、オフラインの際のPhotonNetworkの関数と変数、およびその結果のリストです:
PhotonNetwork.player
: プレイヤーIDは常に-1です。PhotonNetwork.playerName
: 予期されたとおりに作動します。PhotonNetwork.playerList
: ローカルプレイヤーのみを含みます。PhotonNetwork.otherPlayers
常に空です。PhotonNetwork.time
: returnsTime.time
を返します。PhotonNetwork.isMasterClient
: 常にtrueです。PhotonNetwork.AllocateViewID()
: 予期されたとおりに作動します。PhotonNetwork.Instantiate
: 予期されたとおりに作動します。PhotonNetwork.Destroy
: 予期されたとおりに作動します。PhotonNetwork.RemoveRPCs/RemoveRPCsInGroup/SetReceivingEnabled/SetSendingEnabled/SetLevelPrefix
: これらはシングルプレイヤーでは意味を成しませんが、なにも悪影響を及ぼすこともありません。PhotonView.RPC
: 予期されたとおりに作動します。
上記以外のプロパティやメソッドを使用すると予期せぬ結果が生じる場合がある点、また一部はなにも影響をおよぼさない点に留意してください。
例: PhotonNetwork.room
は、nullを返します。
シングルプレイヤーでゲームを開始して、後にマルチプレイヤーに移行したい場合には、その代わりに1プレイヤーゲームのホスティングを検討する場合があるかもしれません。
これによってバッファリングされたRPCとインスタンス化コールが保存されますが、インスタンス化は接続後に自動的に持ち越されません。
オフラインモードを停止するには、PhotonNetwork.offlineMode = false;
を設定するかConnect()
を呼び出してください。