高レベルネットワーク接続です。クライアントからサーバー、サーバーからクライアントの両方の接続に使用されます。
A NetworkConnection corresponds to a specific connection for a host in the transport layer. It has a connectionId that is assigned by the transport layer and passed to the Initialize function.
NetworkClient には 1 つの NetworkConnection があります。NetworkServerSimple によって複数の NetworkConnections が管理されています。NetworkServer には複数の "遠隔" 接続と、ローカルクライアントのための 1 つの "ローカル" 接続があります。
NetworkConnection クラスにはメッセージの送信と処理機能が備えられています。ネットワーク経由の送信データのためには、メッセージオブジェクト、バイト配列、NetworkWriter オブジェクトを送信するメソッドがあります。ネットワークからの受信データに対応するためには、メッセージ ID にハンドラ関数を登録し、 HandleBytes() でバイト配列を処理し、HandleReader() で NetworkReader オブジェクトを処理することができます。
NetworkConnection オブジェクトはネットワークされたオブジェクトの監視役としても働きます。ある接続が NetworkIdentity を持つ ネットワークされたオブジェクトの監視役である場合、オブジェクトは紐づけられた接続のクライアントから見ることができ、インクリメンタルな状態の変更はクライアントに送信されます。
NetworkConnection オブジェクトはネットワークゲームオブジェクトを「所有する」ことができます。所有されるオブジェクトは、接続が削除されるとき、デフォルトではサーバー側で削除されます。接続は、クライアントによって作成されたプレイヤーオブジェクトと、関連するクライアントに割り当てられたクライアント承認をもつ他のオブジェクトを所有します。
NetworkConnection には、その挙動をカスタマイズするための多くの仮想関数があります。 NetworkClient と NetworkServer は両方とも、networkConnectionClass のメンバー変数を設定することにより NetworkConnection から派生したカスタムクラスをインスタンス化するために作られています。