A component that manages the process of a new host taking over a game when the old host is lost. This is referred to as "host migration". The migration manager sends information about each peer in the game to all the clients, and when the host is lost because of a crash or network outage, the clients are able to choose a new host, and continue the game.
The old host is able to rejoin the new game on the new host.
The state of SyncVars and SyncLists on all objects with NetworkIdentities in the scene is maintained during a host migration. This also applies to custom serialized data for objects.
All of the player objects in the game are disabled when the host is lost. Then, when the other clients rejoin the new game on the new host, the corresponding players for those clients are re-enabled on the host, and respawned on the other clients. No player state data is lost during a host migration.
This class provides a simple default UI for controlling the behaviour when the host is lost. The UI can be disabled with the showGUI property. There are a number of virtual functions that can be implemented to customize the behaviour of host migration.
Note that only data that is available to clients will be preserved during a host migration. If there is data that is only on the server, then it will not be available to the client that becomes the new host. This means data on the host that is not in SyncVars or SyncLists will not be available after a host migration.
The callback function OnStartServer is invoked for all networked objects when the client becomes a new host.
On the new host, the NetworkMigrationManager uses the function NetworkServer.BecomeNewHost() to construct a networked server scene from the state in the current ClientScene.
The peers in a game with host migration enabled are identified by their connectionId on the server. When a client reconnects to the new host of a game, this connectionId is passed to the new host so that it can match this client with the client that was connected to the old host. This Id is set on the ClientScene as the "reconnectId".
The old host of the game, the one that crashed or lost its network connection, can also reconnect to the new game as a client. This client uses the special ReconnectId of ClientScene.ReconnectIdHost (which is zero).
client | The client instance that is being used to connect to the host. |
disconnectedFromHost | True is this is a client that has been disconnected from a host. |
hostMigration | Controls whether host migration is active. |
hostWasShutdown | True if this was the host and the host has been shut down. |
matchInfo | Information about the match. This may be null if there is no match. |
newHostAddress | The IP address of the new host to connect to. |
offsetX | The X offset in pixels of the migration manager default GUI. |
offsetY | The Y offset in pixels of the migration manager default GUI. |
oldServerConnectionId | The connectionId that this client was assign on the old host. |
peers | The set of peers involved in the game. This includes the host and this client. |
pendingPlayers | The player objects that have been disabled, and are waiting for their corresponding clients to reconnect. |
showGUI | Flag to toggle display of the default UI. |
waitingReconnectToNewHost | True if this is a client that was disconnected from the host and is now waiting to reconnect to the new host. |
waitingToBecomeNewHost | True if this is a client that was disconnected from the host, and was chosen as the new host. |
BecomeNewHost | This causes a client that has been disconnected from the host to become the new host of the game. |
DisablePlayerObjects | This causes objects for known players to be disabled. |
FindNewHost | This is a utility function to pick one of the peers in the game as the new host. |
Initialize | Used to initialize the migration manager with client and match information. |
LostHostOnClient | This should be called on a client when it has lost its connection to the host. |
LostHostOnHost | This should be called on a host when it has has been shutdown. |
OnAuthorityUpdated | A virtual function that is called when the authority of a non-player object changes. |
OnClientDisconnectedFromHost | A virtual function that is called when the client is disconnected from the host. |
OnPeersUpdated | A virtual function that is called when the set of peers in the game changes. |
OnServerHostShutdown | A virtual function that is called when the host is shutdown. |
OnServerReconnectObject | A virtual function that is called for non-player objects with client authority on the new host when a client from the old host reconnects to the new host. |
OnServerReconnectPlayer | A virtual function that is called on the new host when a client from the old host reconnects to the new host. |
ReconnectObjectForConnection | This re-establishes a non-player object with client authority with a client that is reconnected. It is similar to NetworkServer.SpawnWithClientAuthority(). |
ReconnectPlayerForConnection | This re-establishes a player object with a client that is reconnected. It is similar to NetworkServer.AddPlayerForConnection(). The player game object will become the player object for the new connection. |
Reset | Resets the migration manager, and sets the ClientScene's ReconnectId. |
SendPeerInfo | This sends the set of peers in the game to all the peers in the game. |
OnAuthorityUpdated | A virtual function that is called when the authority of a non-player object changes. |
OnClientDisconnectedFromHost | A virtual function that is called when the client is disconnected from the host. |
OnPeersUpdated | A virtual function that is called when the set of peers in the game changes. |
OnServerHostShutdown | A virtual function that is called when the host is shutdown. |
OnServerReconnectObject | A virtual function that is called for non-player objects with client authority on the new host when a client from the old host reconnects to the new host. |
OnServerReconnectPlayer | A virtual function that is called on the new host when a client from the old host reconnects to the new host. |
enabled | Enabled Behaviours are Updated, disabled Behaviours are not. |
isActiveAndEnabled | Has the Behaviour had enabled called. |
gameObject | The game object this component is attached to. A component is always attached to a game object. |
tag | Тег данного игрового объекта. |
transform | The Transform attached to this GameObject (null if there is none attached). |
useGUILayout | Disabling this lets you skip the GUI layout phase. |
hideFlags | Should the object be hidden, saved with the scene or modifiable by the user? |
name | The name of the object. |
BroadcastMessage | Вызывает метод названный methodName на каждом MonoBehaviour этого game object-а или любого из его потомков. |
CompareTag | Помечен ли этот игровой объект тэгом tag? |
GetComponent | Возвращает компонент типа type, если он прикреплен к игровому объекту и null, если не прикреплен. |
GetComponentInChildren | Returns the component of Type type in the GameObject or any of its children using depth first search. |
GetComponentInParent | Returns the component of Type type in the GameObject or any of its parents. |
GetComponents | Returns all components of Type type in the GameObject. |
GetComponentsInChildren | Returns all components of Type type in the GameObject or any of its children. |
GetComponentsInParent | Returns all components of Type type in the GameObject or any of its parents. |
SendMessage | Вызывает метод с именем methodName в каждом MonoBehaviour на этом объекте. |
SendMessageUpwards | Вызывает на каждом MonoBehaviour в данном игровом объекте и на каждом предке скрипта метод с именем methodName. |
CancelInvoke | Отменяет все вызовы Invoke в этом MonoBehaviour. |
Invoke | Вызывает метод methodName по истечении времени time секунд. |
InvokeRepeating | Вызывает метод methodName по истечении времени time секунд, затем повторяет вызов каждые repeatRate секунд. |
IsInvoking | Есть ли какой то ожидающий вызов methodName? |
StartCoroutine | Запуск корутины. |
StopAllCoroutines | Останавливает все корутины запущенные на этом MonoBehaviour. |
StopCoroutine | Останавливает все корутины с именем methodName запущенные на этом MonoBehaviour. |
GetInstanceID | Returns the instance id of the object. |
ToString | Returns the name of the game object. |
Logs message to the Unity Console (identical to Debug.Log). | |
Destroy | Removes a gameobject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Makes the object target not be destroyed automatically when loading a new scene. |
FindObjectOfType | Returns the first active loaded object of Type type. |
FindObjectsOfType | Returns a list of all active loaded objects of Type type. |
Instantiate | Returns a copy of the object original. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |
Awake | Функция Awake вызывается когда экземпляр скрипта будет загружен. |
FixedUpdate | Эта функция вызывается с частотой фиксированных кадров (fixed framerate), если MonoBehaviour включен. |
LateUpdate | LateUpdate вызывается каждый кадр, если Behaviour включен. |
OnAnimatorIK | Обратный вызов (Callback) для установки IK анимации (инверсной кинематики). |
OnAnimatorMove | Обратный вызов для обработки перемещения анимации для модификации смещения корня. |
OnApplicationFocus | Посылается ко всем игровым объектам когда плейер получает или теряет фокус. |
OnApplicationPause | Посылается ко всем игровым объектам когда плейер на паузе. |
OnApplicationQuit | Sent to all game objects before the application is quit. |
OnAudioFilterRead | If OnAudioFilterRead is implemented, Unity will insert a custom filter into the audio DSP chain. |
OnBecameInvisible | OnBecameInvisible is called when the renderer is no longer visible by any camera. |
OnBecameVisible | OnBecameVisible is called when the renderer became visible by any camera. |
OnCollisionEnter | OnCollisionEnter вызывается, когда этот collider/rigidbody начал соприкосновение с другим rigidbody/collider. |
OnCollisionEnter2D | Передается когда входящий коллайдер контактирует с коллайдером данного объекта (только 2D физика). |
OnCollisionExit | OnCollisionExit вызывается, когда collider/rigidbody прекращает контакт с другим rigidbody/collider. |
OnCollisionExit2D | Передается, когда коллайдер другого объекта перестает соприкасаться с коллайдером этого объекта (только 2D физика). |
OnCollisionStay | OnCollisionStay вызывается один раз в кадр для каждого collider/rigidbody, который касается другого rigidbody/collider. |
OnCollisionStay2D | Передается каждый кадр, пока коллайдер другого объекта контактирует с коллайдером данного объекта (только 2D физика). |
OnConnectedToServer | Called on the client when you have successfully connected to a server. |
OnControllerColliderHit | OnControllerColliderHit вызывается тогда, когда контроллер сталкивается с коллайдеров, во время выполнения метода Move. |
OnDestroy | This function is called when the MonoBehaviour will be destroyed. |
OnDisable | This function is called when the behaviour becomes disabled () or inactive. |
OnDisconnectedFromServer | Called on the client when the connection was lost or you disconnected from the server. |
OnDrawGizmos | Implement OnDrawGizmos if you want to draw gizmos that are also pickable and always drawn. |
OnDrawGizmosSelected | Implement this OnDrawGizmosSelected if you want to draw gizmos only if the object is selected. |
OnEnable | This function is called when the object becomes enabled and active. |
OnFailedToConnect | Called on the client when a connection attempt fails for some reason. |
OnFailedToConnectToMasterServer | Called on clients or servers when there is a problem connecting to the MasterServer. |
OnGUI | OnGUI is called for rendering and handling GUI events. |
OnJointBreak | Вызывается при разрушении сустава, прикрепленного к такому же игровому объекту. |
OnJointBreak2D | Вызывается при разрушении сустава, прикрепленного к такому же игровому объекту. |
OnLevelWasLoaded | This function is called after a new level was loaded. |
OnMasterServerEvent | Called on clients or servers when reporting events from the MasterServer. |
OnMouseDown | OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider. |
OnMouseDrag | OnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse. |
OnMouseEnter | Called when the mouse enters the GUIElement or Collider. |
OnMouseExit | Called when the mouse is not any longer over the GUIElement or Collider. |
OnMouseOver | Called every frame while the mouse is over the GUIElement or Collider. |
OnMouseUp | OnMouseUp is called when the user has released the mouse button. |
OnMouseUpAsButton | OnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed. |
OnNetworkInstantiate | Called on objects which have been network instantiated with Network.Instantiate. |
OnParticleCollision | OnParticleCollision is called when a particle hits a collider. |
OnPlayerConnected | Called on the server whenever a new player has successfully connected. |
OnPlayerDisconnected | Called on the server whenever a player disconnected from the server. |
OnPostRender | OnPostRender is called after a camera finished rendering the scene. |
OnPreCull | OnPreCull вызывается до того, как камера отсечёт сцену. |
OnPreRender | OnPreRender вызывается перед тем, как камера начнёт рендерить сцену. |
OnRenderImage | OnRenderImage вызывается после того как весь рендеринг для отрисовки изображения завершиться. |
OnRenderObject | OnRenderObject вызывается после того, как камера отрендерила сцену. |
OnSerializeNetworkView | Used to customize synchronization of variables in a script watched by a network view. |
OnServerInitialized | Called on the server whenever a Network.InitializeServer was invoked and has completed. |
OnTransformChildrenChanged | This function is called when the list of children of the transform of the GameObject has changed. |
OnTransformParentChanged | This function is called when the parent property of the transform of the GameObject has changed. |
OnTriggerEnter | OnTriggerEnter вызывается, когда Collider other входит в триггер. |
OnTriggerEnter2D | Передается, когда другой обьект входит в триггер присоединенный к данному обьекту (только 2D физика). |
OnTriggerExit | OnTriggerExit вызывается, когда Collider other перестает соприкасаться с триггером. |
OnTriggerExit2D | Передается когда другой объект покидает триггер, присоединенный к данному объекту(только 2D физика). |
OnTriggerStay | OnTriggerStay is called once per frame for every Collider other that is touching the trigger. |
OnTriggerStay2D | Передается каждый кадр, пока другой объект находится в триггере, присоединенном к этому объекту (только 2D физика). |
OnValidate | Эта функция вызывается когда скрипт загружается или изменяется значение в Инспекторе (Вызывается только в редакторе). |
OnWillRenderObject | OnWillRenderObject вызвается один раз для каждой камеры, если объект в зоне видимости. |
Reset | Reset to default values. |
Start | Start is called on the frame when a script is enabled just before any of the Update methods is called the first time. |
Update | Update вызывается каждый кадр, если MonoBehaviour включен. |