Unity でのネットワーキング要素
RPCの詳細

ネットワークビュー(Network Views)

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

ネットワークビューはネットワーク上でデータを共有するための主要コンポーネントです。二種類のネットワーク通信があり,状態同期(State Synchronization)とリモートプロシージャコール(Remote Procedure Calls)と呼ばれます。

ネットワークビューは特定のオブジェクトの変更を監視します。これらの変更はネットワーク上の他の全てのクライアントに共有され,状態の変更が通知されていることを保証します。この概念が状態同期( state synchronization )と呼ばれ,詳細はState Synchronizationページで確認ができます。

状態同期のオーバーヘッドの発生が望ましくない状況はいくつかあり,例えば,新しいオブジェクトの位置や再度生成されたプレイヤーの情報の送信がそれに当たります。このようなイベントは頻繁なものでないため,関連するオブジェクトの状態を同期する意味がありません。その代わり,リモートプロシージャコール( remote procedure call )を用いてクライアントやサーバに操作を実行するように指示することが出来ます。リモートプロシージャコールに関する詳細はRPCマニュアル を確認下さい。

技術的な詳細

ネットワークビューはNetworkViewIDでネットワーク上識別され,これはネットワークマシン上でユニークにした識別子です。128ビットの数字として表現されますが,ネットワークを経由する際,可能である場合は16ビットに自動圧縮されます。

クライアント側で受信したパケットはNetworkViewIDで指定された特定のネットワークビューに適用する必要があります。Unityはこの識別子を使って正しいネットワークビューを見つけることが出来,データを展開して,受信パケットの内容をネットワークビューの特定のオブジェクトに適用することができます。

Editorでのネットワークビューの詳細についてはNetwork Viewコンポーネントリファレンス を参照下さい。

ネットワークオブジェクトを作成するためにNetwork.Instantiate() を使用する場合は,ネットワークビューを手動で適切に割り当てることを心配する必要がありません。バックグラウンドで自動的に処理されます。

しかし各ネットワークビューのNetworkViewIDの値はNetwork.AllocateViewID を使って手動でセットすることが出来ます。スクリプティングリファレンスのドキュメントでRPC関数を持つ全てのクライアントでオブジェクトをインスタンス化し,NetworkViewIDをAllocateViewIDで手動セットする例が示されています。

Unity でのネットワーキング要素
RPCの詳細