旧ホストが失われた場合に、新しいホストがゲームを引き継ぐプロセスを管理するコンポーネント。このプロセスは「ホストマイグレーション」と呼はれます。マイグレーションマネージャーはゲーム内の各ピアの情報をすべてのクライアントに送ります。クラッシュやネットワーク停止によりホストが失われた場合、クライアントは新しいホストを選択しゲームを継続することができます。
旧ホストは新しいホスト上の新しいゲームに再参加することができます。
ホストマイグレーションが行われる際、シーン内のすべての NetworkIdentity コンポーネントオブジェクトの SyncVar と SyncList の状態が維持されます。これは、それらのオブジェクトの、シリアライズされたカスタムデータについても同様です。
ホストが失われると、ゲーム中のすべてのプレイヤーオブジェクトが無効になります。別のクライアントが新しいホストで新しいゲームに再度加わると、そのクライアントに関連するプレイヤーがホスト上で再び有効化され、他のクライアント上でオブジェクトが再生成されます。したがって、どのプレイヤーの状態データも、マイグレーション中に失われることはありません。
このクラスは、ホストが失われた場合に挙動を制御するための簡易なデフォルト UI を提供します。デフォルト UI は showGUI プロパティーを有効にすると無効になります。多くの実装可能な仮想関数があり、ホストマイグレーションの挙動をカスタム化できます。
ホストマイグレーションの間、クライアントが使用できるデータのみが保存されることに注意してください。もし、サーバー上でのみ使用されるデータの場合は、新しいホストになるクライアントはそれを使用することはできません。つまり、SyncVars か SyncLists 状態でないホスト上のデータは、ホストマイグレーション後は使用することはできません。
クライアントが新しいホストになるとき、コールバック関数の OnStartServer がすべてのネットワークオブジェクトに対して呼び出されます。
新しいホストで、NetworkMigrationManager は関数 NetworkServer.BecomeNewHost() を使用し、現在の ClientScene からネットワーク化されたサーバーシーンを作成します。
ゲーム内でホストマイグレーションが可能なピアは、サーバー上の connectionId によって認識されます。クライアントがゲームの新しいホストに再接続するとき、この connectionId が新しいホストに渡され、クライアントと旧ホストに接続していたクライアントをマッチングします。この Id は ClientScene 上で「reconnectId」として設定されます。
クラッシュしたりネットワーク接続を失ったゲームの旧ホストも、クライアントとして新しいゲームに再接続できます。このクライアントは ClientScene.ReconnectIdHost の特別な ReconnectId (値は 0) を使用します。
client | ホストへの接続に使用されるクライアントインスタンス |
disconnectedFromHost | ホストに接続していないクライアントならば true |
hostMigration | ホストマイグレーションをアクティブにするかを制御 |
hostWasShutdown | 停止しているホストならば true |
matchInfo | マッチングの情報。一致するものがない場合は、null |
newHostAddress | 新しいホストが接続する IP アドレス |
offsetX | マイグレーションマネージャーのデフォルト GUI のオフセット X (ピクセル単位) |
offsetY | マイグレーションマネージャーのデフォルト GUI のオフセット Y (ピクセル単位) |
oldServerConnectionId | クライアントが旧ホストで与えられていた connectionId |
peers | ゲームに関連するピアの集まり。ホストとクライアントを含む。 |
pendingPlayers | 無効になっており、通信先のクライアントの再接続を待機中のプレイヤーオブジェクト |
showGUI | デフォルト UI の表示をトグルするためのフラグ |
waitingReconnectToNewHost | ホストに接続していない状態で、かつ、新しいホストに再接続するのを待機中のクライアントならば true |
waitingToBecomeNewHost | ホストに接続しておらず、新しいホストとして選択されたクライアントならば true |
BecomeNewHost | ホストへの接続が失われていたクライアントをゲームの新しいホストにする |
DisablePlayerObjects | プレイヤーとしてのオブジェクトを無効にする |
FindNewHost | 新しいホストとしてゲーム内のピアのうち 1 つを選択するユーティリティー関数 |
Initialize | マイグレーションマネージャーをクライアントとマッチング情報とともに初期化する |
LostHostOnClient | ホストとの接続が失われたとき、クライアント上で呼び出される |
LostHostOnHost | ホストが停止している場合にホスト上で呼び出される |
ReconnectObjectForConnection | クライアント権限のある非プレイヤーオブジェクトを再接続したクライアントとともに再構築します。NetworkServer.SpawnWithClientAuthority() と類似。 |
ReconnectPlayerForConnection | プレイヤーオブジェクトを再接続されたクライアントとともに再構築する。NetworkServer.AddPlayerForConnection() に類似。プレイヤーゲームオブジェクトは新しい接続のプレイヤーオブジェクトとなる。 |
Reset | マイグレーションマネージャーをリセットし、ClientScene の ReconnectId を設定する |
SendPeerInfo | ゲームのピアの集まりに関する情報をゲームのピアに送る |
OnAuthorityUpdated | 非プレイヤーオブジェクトの権限が変わるときに呼び出される仮想関数 |
OnClientDisconnectedFromHost | クライアントがホストへの接続を失ったとき呼び出される仮想関数 |
OnPeersUpdated | ゲームのピアの集まりが変わるときに呼び出される仮想関数 |
OnServerHostShutdown | ホストをシャットダウンするときに呼び出される仮想関数 |
OnServerReconnectObject | 旧ホストが新しいホストに再接続するとき、新しいホスト上でクライアント権限を持つ非プレイヤーオブジェクトのために呼び出される仮想関数 |
OnServerReconnectPlayer | 旧ホストのクライアントが新しいホストに再接続するときに、新しいホスト上で呼び出される仮想関数 |
enabled | 有効であれば更新され、無効であれば更新されません。 |
isActiveAndEnabled | Behaviour が有効かどうか |
gameObject | このコンポーネントはゲームオブジェクトにアタッチされます。コンポーネントはいつもゲームオブジェクトにアタッチされています。 |
tag | ゲームオブジェクトのタグ |
transform | The Transform attached to this GameObject. |
runInEditMode | Allow a specific instance of a MonoBehaviour to run in edit mode (only available in the editor). |
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 | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
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 is called once per physics update for every Collider other that is touching the trigger. |
OnTriggerStay2D | トリガー状態のオブジェクトのコライダーと別のオブジェクトのコライダー衝突している間、毎フレーム呼び出され続けます。(2D 物理挙動のみ) |
OnValidate | この関数はスクリプトがロードされた時やインスペクターの値が変更されたときに呼び出されます(この呼出はエディター上のみ) |
OnWillRenderObject | OnWillRenderObject はカメラからオブジェクトが可視状態の場合、各カメラごとに一回呼び出されます。 |
Reset | デフォルト値にリセットします |
Start | Start はスクリプトが有効で、Update メソッドが最初に呼び出される前のフレームで呼び出されます |
Update | Update は MonoBehaviour が有効の場合に、毎フレーム呼び出されます |