NetworkIdentity はサーバーとクライアント間のネットワークをまたいでオブジェクトを識別します。その主要なデータは、サーバーによって配置され、それからクライアント上で設定される NetworkInstanceId です。これは、ネットワーク通信において、異なるマシンでゲームオブジェクトを見つけるために使用されます。
NetworkIdentity は、オブジェクトの情報をネットワークと同期するのに使用されます。サーバーだけが NetworkIdentity コンポーネントを持ったオブジェクトのインスタンスを作成しなければなりません。そうでないと、インスタンスがシステムと正しく接続されません。
サブコンポーネントの階層がある複雑なオブジェクトに関しては、NetworkIdentity は階層のルートにあることが必要です。階層のサブコンポーネントに複数の NetworkIdentity コンポーネントを持つことはサポートされていません。
NetworkBehaviour スクリプトが正常に機能するためには、ゲームオブジェクト上に NetworkIdentity を必要とします。
NetworkIdentity はオブジェクトの NetworkBehaviours のダーティな状態を管理します。NetworkBehaviours がダーティであるのを見つけると、更新パケットを作成しクライアントに送信します。
NetworkIdentity に管理されるシリアライズの更新のフローは以下のとおりです。
* 各 NetworkBehaviour がダーティマスクを持つ。このマスクは OnSerialize の中で syncVarDirtyBits として使用可能。
* NetworkBehaviour スクリプト内のそれぞれの SyncVar にダーティマスクの中のビットが一つアサインされる。
* SyncVar の値が変更されると、その SyncVar 用のビットがダーティマスク内に設定される。
* または、SetDirtyBit() の呼び出しによって直接ダーティマスクに記述される。
* NetworkIdentity オブジェクトが、更新のループの一部としてサーバー上で検証される。
* NetworkIdentity の NetworkBehaviour にダーティなものがある場合、UpdateVars パケットがそのオブジェクト用に作成される。
* UpdateVars パケットが OnSerialize の呼び出しによってオブジェクトの各 NetworkBehaviour に追加される。
* ダーティでない NetworkBehaviour が、そのダーティビットのパケットに 0 を記述する。
* ダーティな NetworkBehaviour がそのダーティマスクを記述し、その後、変更された SyncVars の値を記述する。
* If OnSerialize returns true for a NetworkBehaviour, the dirty mask is reset for that NetworkBehaviour, so it will not send again
until its value changes.
* UpdateVars パケットが、オブジェクトを観測しているクライアントで準備の整ったものに送信される。
クライアント上での流れ:
* UpdateVars パケットがオブジェクト用に受け取られる。
* OnDeserialize 関数がオブジェクトの各 NetworkBehaviour スクリプト用に呼び出される。
* オブジェクトの各 NetworkBehaviour スクリプトがダーティマスクを一つ読む。
* NetworkBehaviour のダーティマスクが 0 だと OnDeserialize 関数は、それ以上読み込むことなくリターンします。
* ダーティマスクが 0 以外の値だと、OnDeserialize 関数は、設定されたダーティビットに対応する SyncVar 用の値を読み出します。
* SyncVar フック関数がある場合、それはストリームから読み出された値によって実行されます。
| clientAuthorityCallback | オブジェクトのクライアント権限の状態が変更したとき、通知されるように設定することができるコールバック |
| assetId | サーバーに接続されているすべてのクライアント上にゲームオブジェクトが生成されるときソースアセット(source asset)を見つけるために使う一意の識別子 |
| clientAuthorityOwner | このオブジェクトの権限を持っているクライアント。クライアントが権限を持たない場合は null になります。 |
| connectionToClient | この NetworkIdentity に関連付けられた接続。これはサーバー上のプレイヤーオブジェクトのみ有効です。 |
| connectionToServer | この NetworkIdentity に関連付けられた UConnection。これはローカルクライアント上のプレイヤーオブジェクトのみを有効にします。 |
| hasAuthority | オブジェクトが、分散ネットワークアプリケーションのオブジェクトの正式バージョンである場合は true を返します。 |
| isClient | クライアントで実行され、オブジェクトがサーバーによって生成されている場合は true を返します。 |
| isLocalPlayer | オブジェクトがローカルプレイヤーである場合は true |
| isServer | サーバー上で生成されたオブジェクトがサーバー上で実行している場合、True を返します。 |
| localPlayerAuthority | localPlayerAuthority とは、「所有権」(owning)を有するプレイヤーのクライアントが自分のゲームのプレーヤーオブジェクトに対する権限を有することを意味します。 |
| netId | この特殊なオブジェクトのインスタンスに関するユニークな識別子は、ネットワーク接続されたクライアントやサーバー間のオブジェクトを追跡するために使われます。 |
| observers | このオブジェクトを見ることができるネットワークコネクション(プレイヤー)の設定 |
| playerControllerId | オブジェクトに関連付けられたプレイヤーの ID 番号 |
| sceneId | シーン内で NetworkIdentity オブジェクトのユニークな識別子です。 |
| serverOnly | ゲームがサーバー(またはホスト)として実行しているとき、このオブジェクトだけをシーンに存在させるためのフラグです。 |
| Networking.NetworkIdentity | この NetworkIdentity のために、どのくらい頻繁にネットワークにおける高頻度なアップデートが送信されるかを定義します。 |
| AssignClientAuthority | クライアントの NetworkConnection を通じてクライアントにオブジェクトのコントロールを割り当てられます。 |
| ForceSceneId | シーン ID に特定の値を強制的に設定します。 |
| RebuildObservers | このコンポーネントをアタッチしているオブジェクトをリビルドすることをプレイヤーに通知することができます。OnRebuildObserver のコールバック関数は NetworkBehaviour ごとに実行されます。 |
| RemoveClientAuthority | その接続でクライアントのオブジェクトの所有権を削除します。 |
| ClientAuthorityCallback | ClientAuthorityCallback のデリゲート型 |
| enabled | 有効であれば更新され、無効であれば更新されません。 |
| isActiveAndEnabled | Behaviour が有効かどうか |
| gameObject | このコンポーネントはゲームオブジェクトにアタッチされます。コンポーネントはいつもゲームオブジェクトにアタッチされています。 |
| tag | ゲームオブジェクトのタグ |
| transform | GameObject にアタッチされた Transform (アタッチされていない場合は null) |
| useGUILayout | これを無効にすると、GUI のレイアウトフェーズをスキップすることができます |
| hideFlags | オブジェクトは非表示、シーンに保存、ユーザーが編集可能、などを設定する。 |
| name | オブジェクト名 |
| BroadcastMessage | ゲームオブジェクトまたは子オブジェクトにあるすべての MonoBehaviour を継承したクラスにある methodName 名のメソッドを呼び出します。 |
| CompareTag | このゲームオブジェクトは tag とタグ付けされているかどうか |
| GetComponent | ゲームオブジェクトに type がアタッチされている場合は type のタイプを使用してコンポーネントを返します。ない場合は null です |
| GetComponentInChildren | GameObject や深さ優先探索を活用して、親子関係にある子オブジェクトから type のタイプのコンポーネントを取得します。 |
| GetComponentInParent | GameObject や深さ優先探索を活用して、親子関係にある親オブジェクトから type のタイプのコンポーネントを取得します。 |
| GetComponents | GameObject から type のタイプのコンポーネントを「すべて」取得します。 |
| GetComponentsInChildren | GameObject や深さ優先探索を活用して、親子関係にある子オブジェクトから type のタイプのコンポーネントを「すべて」取得します。 |
| GetComponentsInParent | GameObject や深さ優先探索を活用して、親子関係にある親オブジェクトから type のタイプのコンポーネントを「すべて」取得します。 |
| SendMessage | ゲームオブジェクトにアタッチされているすべての MonoBehaviour にある methodName と名付けたメソッドを呼び出します |
| SendMessageUpwards | ゲームオブジェクトと親(の親、さらに親 ... )にアタッチされているすべての MonoBehaviour にある methodName と名付けたメソッドを呼び出します |
| CancelInvoke | すべての Invoke をキャンセルします |
| Invoke | 設定した時間(単位は秒)にメソッドを呼び出します |
| InvokeRepeating | 設定した時間(単位は秒)にメソッドを呼び出し、repeatRate 秒ごとにリピートします |
| IsInvoking | メソッドの呼出が保留中かどうか |
| StartCoroutine | コルーチンを開始します |
| StopAllCoroutines | Behaviour 上で実行されているコルーチンをすべて停止します |
| StopCoroutine | この Behaviour 上で実行されている methodName という名のコルーチン、または routine として保持されているコルーチンをすべて停止します |
| GetInstanceID | オブジェクトのインスタンス ID を返します |
| ToString | ゲームオブジェクトの名前を返します |
| Unity コンソールにログを出力します (Debug.Log と同じです) | |
| Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
| DestroyImmediate | オブジェクト obj を破棄します。 |
| DontDestroyOnLoad | 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します |
| FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
| FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
| Instantiate | オブジェクト original のコピーを返します |
| bool | オブジェクトが存在するかどうか |
| operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
| operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |
| Awake | スクリプトのインスタンスがロードされたときに呼び出されます |
| FixedUpdate | MonoBehaviour が有効の場合、この関数は毎回、固定フレームレートで呼び出されます。 |
| LateUpdate | Behaviour が有効の場合、LateUpdate は毎フレーム呼びだされます |
| OnAnimatorIK | アニメーション IK (インバースキネマティクス)をセットアップするときのコールバック |
| OnAnimatorMove | ルートモーションを修正するアニメーション動作を処理するコールバック |
| OnApplicationFocus | プレイヤーがフォーカスを取得、または、失ったときに、すべてのゲームオブジェクトに送信されます。 |
| OnApplicationPause | プレイヤーが一時停止したときにすべてのゲームオブジェクトに送信されます |
| OnApplicationQuit | アプリケーションが終了する前にすべてのゲームオブジェクトで呼び出されます |
| OnAudioFilterRead | OnAudioFilterRead が実装されている場合、Unity は DSP チェーンにカスタムフィルターを挿入します。 |
| OnBecameInvisible | OnBecameInvisible はレンダラーがカメラから見えなくなったときに呼び出されます |
| OnBecameVisible | OnBecameVisible はレンダラーが任意のカメラから見えるようになると呼び出されます |
| OnCollisionEnter | この collider/rigidbody は他の collider/rigidbody に触れたときに OnCollisionEnter は呼び出されます。 |
| OnCollisionEnter2D | オブジェクトのコライダーが別のコライダーに衝突したときに呼び出されます(2D 物理挙動のみ) |
| OnCollisionExit | この collider/rigidbody が他の collider/rigidbody と触れ合うのをやめたときに OnCollisionExit は呼び出されます。 |
| OnCollisionExit2D | オブジェクトのコライダーと別のオブジェクトコライダーが衝突から離れた瞬間に呼び出されます(2D 物理挙動のみ) |
| OnCollisionStay | OnCollisionStay は rigidbody/collider が他の rigidbody/collider に触れている間毎フレーム 1 度だけ呼び出されます。 |
| OnCollisionStay2D | オブジェクトのコライダーと別のオブジェクトのコライダーが衝突している間、毎フレーム呼び出され続けます(2D 物理挙動のみ) |
| OnConnectedToServer | サーバーとの接続に成功したときにクライアント上で呼び出されます |
| OnControllerColliderHit | OnControllerColliderHit はキャラクターコントローラーが移動中にコライダーに衝突した際に、呼び出されます。 |
| OnDestroy | この関数は MonoBehaviour が破棄されるときに呼び出されます |
| OnDisable | この関数は Behaviour が無効/非アクティブになったときに呼び出されます |
| OnDisconnectedFromServer | サーバーとの接続が失われたか切断されたときにクライアント上で呼び出されます |
| OnDrawGizmos | 選択可能にしたり、常に描画したいギズモを描画するには OnDrawGizmos を使用します |
| OnDrawGizmosSelected | オブジェクトが選択されている場合は、ギズモを描画するために OnDrawGizmosSelected を実装します。 |
| OnEnable | この関数はオブジェクトが有効/アクティブになったときに呼び出されます |
| OnFailedToConnect | 接続試行がなんらかの理由で失敗したときにクライアント上で呼び出されます |
| OnFailedToConnectToMasterServer | MasterServer への接続に問題がある場合に、クライアントまたはサーバーで呼び出されます |
| OnGUI | OnGUI はレンダリングと GUI イベントのハンドリングのために呼び出されます |
| OnJointBreak | ゲームオブジェクトに対するジョイントが外れたとき呼び出されます |
| OnJointBreak2D | ゲームオブジェクトにアタッチした Joint2D が壊れたときに呼び出されます。 |
| OnMasterServerEvent | MasterServer からイベントを報告してくるときにクライアントやサーバー上で呼び出されます。 |
| OnMouseDown | OnMouseDown は GUIElement または Collider 上でユーザーがマウスボタンをクリックしたときに呼び出されます |
| OnMouseDrag | OnMouseDrag はユーザーが GUIElement または Collider をマウスでクリックし、ドラッグしている間呼び出されます。 |
| OnMouseEnter | OnMouseEnter は GUIElement または Collider 上にマウスが乗ったときに呼び出されます |
| OnMouseExit | OnMouseExit は GUIElement または Collider 上からマウス離れたときに呼び出されます |
| OnMouseOver | OnMouseOver は GUIElement または Collider 上にマウスがあり続ける限り毎フレーム呼び出され続けます |
| OnMouseUp | OnMouseUp はユーザーがマウスボタンを離したときに呼び出されます |
| OnMouseUpAsButton | OnMouseUpAsButton はマウスを押した時と同じ GUIElement や Collider 上でマウスを離した時のみに呼び出されます。 |
| OnNetworkInstantiate | Network.Instantiate でインスタンス化されたオブジェクトに対して呼び出されます |
| OnParticleCollision | パーティクルがコライダーにヒットしたときに OnParticleCollision が呼び出されます |
| OnParticleTrigger | OnParticleTrigger は、パーティクルシステムのパーティクルが Triggers モジュールの条件を満たすときに呼び出されます。 |
| OnPlayerConnected | 新しいプレイヤーが接続に成功したときにサーバー上で呼び出されます |
| OnPlayerDisconnected | プレイヤーがサーバーから接続が切断されるたびにサーバー上で呼び出されます |
| OnPostRender | OnPostRender はカメラがシーンのレンダリングを完了した後に呼び出されます |
| OnPreCull | OnPreCull はカメラがシーンのカリングを行う直前に呼び出されます。 |
| OnPreRender | OnPreRender はカメラがシーンのレンダリングを開始する前に呼び出されます。 |
| OnRenderImage | OnRenderImage はすべてのレンダリングが RenderImage へと完了したときに呼び出されます。 |
| OnRenderObject | OnRenderObject はカメラがシーンをレンダリングした後に呼び出されます。 |
| OnSerializeNetworkView | ネットワークビューによって監視されるスクリプトの変数の同期をカスタマイズするために使用します |
| OnServerInitialized | Network.InitializeServer が実行され完了したときにサーバー上で呼び出されます |
| OnTransformChildrenChanged | この関数は GameObject の Transform のすべての子の中で変更があったときに呼び出されます |
| OnTransformParentChanged | この関数は GameObject の Transform の parent プロパティーに変更があったときに呼び出されます |
| OnTriggerEnter | Collider が他のトリガーイベントに侵入したときに OnTriggerEnter が呼び出されます。 |
| OnTriggerEnter2D | オブジェクトにアタッチしたトリガーの中に別のオブジェクトが入ったときに呼び出されます。(2D 物理挙動のみ) |
| OnTriggerExit | Collider が other のトリガーに触れるのをやめたときに OnTriggerExit は呼び出されます。 |
| OnTriggerExit2D | トリガー状態のオブジェクトのコライダーと別のオブジェクトのコライダーが衝突から離れた瞬間に、呼び出されます。(2D 物理挙動のみ) |
| OnTriggerStay | OnTriggerStay は Collider が他のトリガーと当たり続けている毎フレーム呼び出されます |
| OnTriggerStay2D | トリガー状態のオブジェクトのコライダーと別のオブジェクトのコライダー衝突している間、毎フレーム呼び出され続けます。(2D 物理挙動のみ) |
| OnValidate | この関数はスクリプトがロードされた時やインスペクターの値が変更されたときに呼び出されます(この呼出はエディター上のみ) |
| OnWillRenderObject | OnWillRenderObject はカメラからオブジェクトが可視状態の場合、各カメラごとに一回呼び出されます。 |
| Reset | デフォルト値にリセットします |
| Start | Start はスクリプトが有効で、Update メソッドが最初に呼び出される前のフレームで呼び出されます |
| Update | Update は MonoBehaviour が有効の場合に、毎フレーム呼び出されます |