Version: 2020.1
言語: 日本語
Network Discovery
Network Lobby Manager

Network Identity

Note: UNet is deprecated, and will be removed from Unity in the future. A new system is under development. For more information and next steps see this blog post.

NetworkIdentity コンポーネントは、Unity ネットワーク高レベル API システムの心臓部分と言えます。このコンポーネントはネットワーク上のゲームオブジェクトの固有の ID を管理し、ネットワークシステムにゲームオブジェクトを認識させるために ID を使用します。

インスペクターウインドウの Network Identity コンポーネント
インスペクターウインドウの Network Identity コンポーネント
プロパティ 機能
Server Only これを有効にすると、Unity はゲームオブジェクトをサーバー上でのみスポーンし、クライアント上でスポーンしないようにします。
Local Player Authority これを有効にすると、このプレイヤーゲームオブジェクトを所有するクライアントに、そのオブジェクトのネットワーク制御権限を与えます。つまり、そのクライアント上のプレイヤーゲームオブジェクトが自身に関する権限を持ちます。Network Transform などの他のコンポーネントはこのことを利用して、どのクライアントが権限をもっているかを判断します。

インスタンス化されたネットワークゲームオブジェクト

Unity のサーバーが権限を持つネットワークシステムでは、サーバーは NetworkServer.Spawn を使用して、ネットワーク ID を持つネットワーク化されたゲームオブジェクトをスポーンする必要があります。これにより、サーバーに接続されているクライアント上に自動的にゲームオブジェクトが作成され、それらに[NetworkInstanceId](ScriptRef:Networking.NetworkInstanceId.html が割り当てられます。

ランタイムにネットワークシステムによってスポーンされたプレハブにはすべて、Network Identity コンポーネントを設定する必要があります。詳細については、ゲームオブジェクトのスポーン を参照してください。

シーンベースのネットワーク化されたゲームオブジェクト

また、シーンの一部として保存したゲームオブジェクト (周辺的小道具など) をネットワーク化することもできます。ネットワーク化されたゲームオブジェクトは、ネットワーク上でそれらをスポーンする必要があるため、挙動が若干異なります。

ゲームを構築するとき、Unity は Network Identity コンポーネントを持つすべてのシーンベースのゲームオブジェクトを無効にします。クライアントがサーバーに接続すると、サーバーはスポーンメッセージを送信して、どのシーンのゲームオブジェクトを有効にするか、そして、最新の状態情報をクライアントに通知します。これにより、ゲームを開始するときやクライアントのゲームで、ゲームオブジェクトが誤った場所に配置されないようにします。または、接続時にスポーンされずに、即座にゲームオブジェクトが破棄されることもあります (例えば、クライアントが接続する前に、イベントによってゲームオブジェクトが破棄された場合など)。 詳細については、ネットワーク化されたシーンのゲームオブジェクト を参照してください。

プレビューペインの Network Information

このコンポーネントには、ネットワーク追跡情報が含まれ、その情報はプレビューウィンドウに表示されます。例えば、オブジェクトが割り当てられたシーン ID、ネットワーク ID、アセット ID などです。これにより、調査とデバッグに役立つ情報を検査することができます。

シーン ID は、NetworkIdentity コンポーネントを持つすべてのシーンオブジェクトで有効です。ネットワーク IDは、この特定のオブジェクトインスタンスの ID です。特定のプレハブからインスタンス化された複数のオブジェクトが存在することがありますが、ネットワーク ID を使用して、ネットワークの更新を適用するオブジェクトを識別します。アセット ID は、オブジェクトがインスタンス化された元のソースアセットを参照します。これは、特定のゲームオブジェクトのプレハブがネットワークを通してスポーンされるときに内部的に使用されます。

ランタイムには、ここにより多くの情報が表示されます (無効の NetworkBehaviour は太字になっていません)

プレビューペインの情報

プロパティ 説明
assetId (スポーンのために) このオブジェクトに関連付けられたプレハブを識別します。
clientAuthorityOwner このオブジェクトの権限を持っているクライアント。権限を持つクライアントがない場合は null。
connectionToClient NetworkIdentity に関連付けられた NetworkConnection。これは、サーバー上のプレイヤーオブジェクトのみに有効です。
connectionToServer NetworkIdentity に関連付けられた NetworkConnection。これは、ローカルクライアント上のプレイヤーオブジェクトのみに有効です。
hasAuthority このオブジェクトが権限を持つバージョンのオブジェクトである場合 (つまり、通常のオブジェクト にとってはサーバー、または、localPlayerAuthority を持つクライアントのどちらか) は True。
isClient オブジェクトがクライアント上で実行されている場合は True。
isLocalPlayer オブジェクトがローカルマシンのプレイヤーである場合は True。
isServer オブジェクトがサーバー上で実行され、スポーンされている場合は True。
localPlayerAuthority オブジェクトがクライアントによって制御されている場合は true (これは、クライアントに権限のあるローカルプレイヤーオブジェクトが該当し、この値は NetworkTransform のような他のコンポーネントで使用されます)。
netId スポーンされたときに割り当てられる、ネットワークセッションの固有の ID
observers このオブジェクトを見ることのできるクライアントの NetworkConnection のリスト (読み込み専用)
playerControllerId このオブジェクトに割り当てられているコントローラー ID (プレイヤーオブジェクトに対してのみ有効)
SceneId シーンのネットワーク化されたオブジェクトの固有の ID。これは再生モードでのみ設定されます。
serverOnly クライアント上でオブジェクトがスポーンされないようにするためのフラグ
Network Discovery
Network Lobby Manager