このクラスで、Physics(物理)RigidBody(剛体)の速度ベクトル(velocity)を 同期することができます。知ってほしいことですが、速度ベクトルのみを同期するのは Unityの物理エンジンが決定論的ではない(どのコンピューターでも常に同じ結果になる わけではない)からです。実際のオブジェクトの位置は同期されないかもしれません。 オブジェクトの位置をどのクライアントでも同じにしたいなら、 PhotonTransformViewも追加して、位置を同期するとよいでしょう。 使い方は、コンポーネントをGameObjectに追加して、 PhotonRigidbodyViewが監視対象コンポーネントの一覧に追加されるのを確認するだけです。 More...
Inherits MonoBehaviour, and IPunObservable.
Public Member Functions | |
void | OnPhotonSerializeView (PhotonStream stream, PhotonMessageInfo info) |
PUNによって1秒あたり数回呼ばれます。それにより、PhotonViewの同期データの読み書きがスクリプトで可能になります。 More... | |
このクラスで、Physics(物理)RigidBody(剛体)の速度ベクトル(velocity)を 同期することができます。知ってほしいことですが、速度ベクトルのみを同期するのは Unityの物理エンジンが決定論的ではない(どのコンピューターでも常に同じ結果になる わけではない)からです。実際のオブジェクトの位置は同期されないかもしれません。 オブジェクトの位置をどのクライアントでも同じにしたいなら、 PhotonTransformViewも追加して、位置を同期するとよいでしょう。 使い方は、コンポーネントをGameObjectに追加して、 PhotonRigidbodyViewが監視対象コンポーネントの一覧に追加されるのを確認するだけです。
void PhotonRigidbodyView.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()を呼ぶ」のようには使えません。
Implements IPunObservable.