Version: 5.4 beta (switch to 5.3)
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

NetworkMigrationManager

class in UnityEngine.Networking

/

Inherits from: MonoBehaviour

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

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).

Variables

clientThe client instance that is being used to connect to the host.
disconnectedFromHostTrue is this is a client that has been disconnected from a host.
hostMigrationControls whether host migration is active.
hostWasShutdownTrue if this was the host and the host has been shut down.
matchInfoInformation about the match. This may be null if there is no match.
newHostAddressThe IP address of the new host to connect to.
offsetXThe X offset in pixels of the migration manager default GUI.
offsetYThe Y offset in pixels of the migration manager default GUI.
oldServerConnectionIdThe connectionId that this client was assign on the old host.
peersThe set of peers involved in the game. This includes the host and this client.
pendingPlayersThe player objects that have been disabled, and are waiting for their corresponding clients to reconnect.
showGUIFlag to toggle display of the default UI.
waitingReconnectToNewHostTrue if this is a client that was disconnected from the host and is now waiting to reconnect to the new host.
waitingToBecomeNewHostTrue if this is a client that was disconnected from the host, and was chosen as the new host.

Public Functions

BecomeNewHostThis causes a client that has been disconnected from the host to become the new host of the game.
DisablePlayerObjectsThis causes objects for known players to be disabled.
FindNewHostThis is a utility function to pick one of the peers in the game as the new host.
InitializeUsed to initialize the migration manager with client and match information.
LostHostOnClientThis should be called on a client when it has lost its connection to the host.
LostHostOnHostThis should be called on a host when it has has been shutdown.
ReconnectObjectForConnectionThis re-establishes a non-player object with client authority with a client that is reconnected. It is similar to NetworkServer.SpawnWithClientAuthority().
ReconnectPlayerForConnectionThis 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.
ResetResets the migration manager, and sets the ClientScene's ReconnectId.
SendPeerInfoThis sends the set of peers in the game to all the peers in the game.

Protected Functions

OnAuthorityUpdatedA virtual function that is called when the authority of a non-player object changes.
OnClientDisconnectedFromHostA virtual function that is called when the client is disconnected from the host.
OnPeersUpdatedA virtual function that is called when the set of peers in the game changes.
OnServerHostShutdownA virtual function that is called when the host is shutdown.
OnServerReconnectObjectA 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.
OnServerReconnectPlayerA virtual function that is called on the new host when a client from the old host reconnects to the new host.

Inherited members

Variables

enabledEnabled Behaviours are Updated, disabled Behaviours are not.
isActiveAndEnabledHas the Behaviour had enabled called.
gameObjectThe game object this component is attached to. A component is always attached to a game object.
tagThe tag of this game object.
transformThe Transform attached to this GameObject (null if there is none attached).
useGUILayoutDisabling this lets you skip the GUI layout phase.
hideFlagsShould the object be hidden, saved with the scene or modifiable by the user?
nameThe name of the object.

Public Functions

BroadcastMessageCalls the method named methodName on every MonoBehaviour in this game object or any of its children.
CompareTagIs this game object tagged with tag ?
GetComponentReturns the component of Type type if the game object has one attached, null if it doesn't.
GetComponentInChildrenReturns the component of Type type in the GameObject or any of its children using depth first search.
GetComponentInParentReturns the component of Type type in the GameObject or any of its parents.
GetComponentsReturns all components of Type type in the GameObject.
GetComponentsInChildrenReturns all components of Type type in the GameObject or any of its children.
GetComponentsInParentReturns all components of Type type in the GameObject or any of its parents.
SendMessageCalls the method named methodName on every MonoBehaviour in this game object.
SendMessageUpwardsCalls the method named methodName on every MonoBehaviour in this game object and on every ancestor of the behaviour.
CancelInvokeCancels all Invoke calls on this MonoBehaviour.
InvokeInvokes the method methodName in time seconds.
InvokeRepeatingInvokes the method methodName in time seconds, then repeatedly every repeatRate seconds.
IsInvokingIs any invoke on methodName pending?
StartCoroutineStarts a coroutine.
StopAllCoroutinesStops all coroutines running on this behaviour.
StopCoroutineStops the first coroutine named methodName, or the coroutine stored in routine running on this behaviour.
GetInstanceIDReturns the instance id of the object.
ToStringReturns the name of the game object.

Static Functions

printLogs message to the Unity Console (identical to Debug.Log).
DestroyRemoves a gameobject, component or asset.
DestroyImmediateDestroys the object obj immediately.
DontDestroyOnLoadMakes the object target not be destroyed automatically when loading a new scene.
FindObjectOfTypeReturns the first active loaded object of Type type.
FindObjectsOfTypeReturns a list of all active loaded objects of Type type.
InstantiateReturns a copy of the object original.

Operators

boolDoes 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.

Messages

AwakeAwake is called when the script instance is being loaded.
FixedUpdateThis function is called every fixed framerate frame, if the MonoBehaviour is enabled.
LateUpdateLateUpdate is called every frame, if the Behaviour is enabled.
OnAnimatorIKCallback for setting up animation IK (inverse kinematics).
OnAnimatorMoveCallback for processing animation movements for modifying root motion.
OnApplicationFocusSent to all game objects when the player gets or loses focus.
OnApplicationPauseSent to all game objects when the player pauses.
OnApplicationQuitSent to all game objects before the application is quit.
OnAudioFilterReadIf OnAudioFilterRead is implemented, Unity will insert a custom filter into the audio DSP chain.
OnBecameInvisibleOnBecameInvisible is called when the renderer is no longer visible by any camera.
OnBecameVisibleOnBecameVisible is called when the renderer became visible by any camera.
OnCollisionEnterOnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
OnCollisionEnter2DSent when an incoming collider makes contact with this object's collider (2D physics only).
OnCollisionExitOnCollisionExit is called when this collider/rigidbody has stopped touching another rigidbody/collider.
OnCollisionExit2DSent when a collider on another object stops touching this object's collider (2D physics only).
OnCollisionStayOnCollisionStay is called once per frame for every collider/rigidbody that is touching rigidbody/collider.
OnCollisionStay2DSent each frame where a collider on another object is touching this object's collider (2D physics only).
OnConnectedToServerCalled on the client when you have successfully connected to a server.
OnControllerColliderHitOnControllerColliderHit is called when the controller hits a collider while performing a Move.
OnDestroyThis function is called when the MonoBehaviour will be destroyed.
OnDisableThis function is called when the behaviour becomes disabled () or inactive.
OnDisconnectedFromServerCalled on the client when the connection was lost or you disconnected from the server.
OnDrawGizmosImplement OnDrawGizmos if you want to draw gizmos that are also pickable and always drawn.
OnDrawGizmosSelectedImplement this OnDrawGizmosSelected if you want to draw gizmos only if the object is selected.
OnEnableThis function is called when the object becomes enabled and active.
OnFailedToConnectCalled on the client when a connection attempt fails for some reason.
OnFailedToConnectToMasterServerCalled on clients or servers when there is a problem connecting to the MasterServer.
OnGUIOnGUI is called for rendering and handling GUI events.
OnJointBreakCalled when a joint attached to the same game object broke.
OnJointBreak2DCalled when a Joint2D attached to the same game object breaks.
OnMasterServerEventCalled on clients or servers when reporting events from the MasterServer.
OnMouseDownOnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider.
OnMouseDragOnMouseDrag is called when the user has clicked on a GUIElement or Collider and is still holding down the mouse.
OnMouseEnterCalled when the mouse enters the GUIElement or Collider.
OnMouseExitCalled when the mouse is not any longer over the GUIElement or Collider.
OnMouseOverCalled every frame while the mouse is over the GUIElement or Collider.
OnMouseUpOnMouseUp is called when the user has released the mouse button.
OnMouseUpAsButtonOnMouseUpAsButton is only called when the mouse is released over the same GUIElement or Collider as it was pressed.
OnNetworkInstantiateCalled on objects which have been network instantiated with Network.Instantiate.
OnParticleCollisionOnParticleCollision is called when a particle hits a collider.
OnParticleTriggerOnParticleTrigger is called when any particles in a particle system meet the conditions in the trigger module.
OnPlayerConnectedCalled on the server whenever a new player has successfully connected.
OnPlayerDisconnectedCalled on the server whenever a player disconnected from the server.
OnPostRenderOnPostRender is called after a camera finished rendering the scene.
OnPreCullOnPreCull is called before a camera culls the scene.
OnPreRenderOnPreRender is called before a camera starts rendering the scene.
OnRenderImageOnRenderImage is called after all rendering is complete to render image.
OnRenderObjectOnRenderObject is called after camera has rendered the scene.
OnSerializeNetworkViewUsed to customize synchronization of variables in a script watched by a network view.
OnServerInitializedCalled on the server whenever a Network.InitializeServer was invoked and has completed.
OnTransformChildrenChangedThis function is called when the list of children of the transform of the GameObject has changed.
OnTransformParentChangedThis function is called when the parent property of the transform of the GameObject has changed.
OnTriggerEnterOnTriggerEnter is called when the Collider other enters the trigger.
OnTriggerEnter2DSent when another object enters a trigger collider attached to this object (2D physics only).
OnTriggerExitOnTriggerExit is called when the Collider other has stopped touching the trigger.
OnTriggerExit2DSent when another object leaves a trigger collider attached to this object (2D physics only).
OnTriggerStayOnTriggerStay is called once per frame for every Collider other that is touching the trigger.
OnTriggerStay2DSent each frame where another object is within a trigger collider attached to this object (2D physics only).
OnValidateThis function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
OnWillRenderObjectOnWillRenderObject is called for each camera if the object is visible.
ResetReset to default values.
StartStart is called on the frame when a script is enabled just before any of the Update methods is called the first time.
UpdateUpdate is called every frame, if the MonoBehaviour is enabled.