class in UnityEngine.Networking
/
Inherits from:MonoBehaviour
一个管理着新主机在旧主机丢失时接管游戏的过程的组件。这一过程称为“主机迁移”。迁移管理器将有关游戏中每个对等方的信息发送给所有客户端,当主机因崩溃或网络中断而丢失时,客户端可以选择新主机并继续游戏。
旧主机能够重新加入新主机上的新游戏。
在主机迁移过程中,具有 NetworkIdentity 的所有对象上的 SyncVars 和 SyncLists 的状态会保持不变。对象的自定义序列化数据也是如此。
主机丢失时,游戏中的所有玩家对象都会被禁用。然后,当其他客户端重新加入新主机上的新游戏时,这些客户端对应的玩家会在主机上被重新启用,并在其他客户端上重新生成。主机迁移过程中不会丢失玩家状态数据。
此类提供了一个简单的默认 UI,用于控制主机丢失时的行为。可以使用 showGUI 属性将该 UI 禁用。可以使用许多虚拟函数来自定义主机迁移的行为。
请注意,在主机迁移过程中,只有客户端可用的数据会被保留。如果数据只存在于服务器上,则成为新主机的客户端将无法使用该数据。这意味着不在 SyncVars 或 SyncLists 中的主机上的数据将在主机迁移后不可用。
客户端成为新主机后,系统会针对所有联网对象调用回调函数 OnStartServer。
在新主机上,NetworkMigrationManager 会使用函数 NetworkServer.BecomeNewHost() 从当前 ClientScene 中的状态构建联网服务器场景。
游戏中启用主机迁移的对等方通过其在服务器上的 connectionId 来标识。当客户端重新连接到游戏的新主机时,此 connectionId 将被传递给新主机,这样新主机可以将该客户端与之前连接旧主机的客户端匹配。该 ID 在 ClientScene 上设置为“reconnectId”。
游戏的旧主机,即崩溃或失去网络连接的主机,也可以作为客户端重新连接到新游戏。该客户端使用特殊的 ReconnectId:ClientScene.ReconnectIdHost(为零)。
client | 用于连接到主机的客户端实例。 |
disconnectedFromHost | 为 true 表示这是一个已从主机断开的客户端。 |
hostMigration | 控制主机迁移是否处于活动状态。 |
hostWasShutdown | 如果这是已被关闭的主机,则为 true。 |
matchInfo | 有关匹配的信息。如果没有匹配,则此属性可能为空。 |
newHostAddress | 要连接到的新主机的 IP 地址。 |
offsetX | 迁移管理器默认 GUI 的 X 偏移(以像素为单位)。 |
offsetY | 迁移管理器默认 GUI 的 Y 偏移(以像素为单位)。 |
oldServerConnectionId | 此客户端在旧主机上分配到的 connectionId。 |
peers | 参与游戏的对等方。其中包含主机和此客户端。 |
pendingPlayers | 已被禁用并在等待其相应客户端重新连接的玩家对象。 |
showGUI | 用于切换显示默认 UI 的标志。 |
waitingReconnectToNewHost | 如果此客户端之前从主机断开并正在等待重新连接新主机,则为 true。 |
waitingToBecomeNewHost | 如果此客户端之前从主机断开并被选为新主机,则为 true。 |
BecomeNewHost | 让已从主机断开的客户端成为游戏的新主机。 |
DisablePlayerObjects | 这会导致已知玩家的对象被禁用。 |
FindNewHost | 从游戏中选择一个对等方作为新主机的实用函数。 |
Initialize | 用于通过客户端和匹配信息来初始化迁移管理器。 |
LostHostOnClient | 在客户端丢失与主机的连接后,应该在客户端上调用此函数。 |
LostHostOnHost | 在主机已被关闭时,应该在主机上调用此函数。 |
ReconnectObjectForConnection | 使用重新连接的客户端重新建立一个具有客户端权限的非玩家对象。与 NetworkServer.SpawnWithClientAuthority() 类似。 |
ReconnectPlayerForConnection | 使用重新连接的客户端重新建立一个玩家对象。与 NetworkServer.AddPlayerForConnection() 类似。玩家游戏对象将成为新连接的玩家对象。 |
Reset | 重置迁移管理器并设置 ClientScene 的 ReconnectId。 |
SendPeerInfo | 将游戏中的对等方发送到游戏中的所有对等方。 |
OnAuthorityUpdated | 在非玩家对象的权限发生更改时调用的虚拟函数。 |
OnClientDisconnectedFromHost | 在客户端从主机断开连接时调用的虚拟函数。 |
OnPeersUpdated | 在游戏中的对等方发生更改时调用的虚拟函数。 |
OnServerHostShutdown | 在主机关闭时调用的虚拟函数。 |
OnServerReconnectObject | 当来自旧主机的客户端重新连接新主机时,在新主机上针对具有客户端权限的非玩家对象调用的虚拟函数。 |
OnServerReconnectPlayer | 当来自旧主机的客户端重新连接新主机时,在新主机上调用的虚拟函数。 |
enabled | 启用的 Behaviour 可更新,禁用的 Behaviour 不可更新。 |
isActiveAndEnabled | 已调用启用的 Behaviour。 |
gameObject | 此组件附加到的游戏对象。始终将组件附加到游戏对象。 |
tag | 此游戏对象的标签。 |
transform | 附加到此 GameObject 的 Transform。 |
runInEditMode | 允许 MonoBehaviour 的特定实例在编辑模式下运行(仅可在 Editor 中使用)。 |
useGUILayout | 禁用该属性可跳过 GUI 布局阶段。 |
hideFlags | 该对象应该隐藏、随场景一起保存还是由用户修改? |
name | 对象的名称。 |
BroadcastMessage | 调用此游戏对象或其任何子项中的每个 MonoBehaviour 上名为 methodName 的方法。 |
CompareTag | 此游戏对象是否使用 tag 进行了标记? |
GetComponent | 如果游戏对象附加了类型为 type 的组件,则将其返回,否则返回 null。 |
GetComponentInChildren | 使用深度首次搜索返回 GameObject 或其任何子项中类型为 type 的组件。 |
GetComponentInParent | 返回 GameObject 或其任何父项中类型为 type 的组件。 |
GetComponents | 返回 GameObject 中类型为 type 的所有组件。 |
GetComponentsInChildren | 返回 GameObject 或其任何子项中类型为 type 的所有组件。 |
GetComponentsInParent | 返回 GameObject 或其任何父项中类型为 type 的所有组件。 |
SendMessage | 调用此游戏对象中的每个 MonoBehaviour 上名为 methodName 的方法。 |
SendMessageUpwards | 调用此游戏对象中的每个 MonoBehaviour 上或此行为的每个父级上名为 methodName 的方法。 |
CancelInvoke | 取消该 MonoBehaviour 上的所有 Invoke 调用。 |
Invoke | 在 time 秒后调用 methodName 方法。 |
InvokeRepeating | 在 time 秒后调用 methodName 方法,然后每 repeatRate 秒调用一次。 |
IsInvoking | 是否有任何待处理的 methodName 调用? |
StartCoroutine | 启动一个协同程序。 |
StopAllCoroutines | 停止在该行为上运行的所有协同程序。 |
StopCoroutine | 停止在该行为上运行的第一个名为 methodName 的协同程序或存储在 routine 中的协同程序。 |
GetInstanceID | 返回对象的实例 ID。 |
ToString | Returns the name of the game object. |
将消息记录到 Unity 控制台(与 Debug.Log 相同)。 | |
Destroy | 删除 GameObject、组件或资源。 |
DestroyImmediate | 立即销毁对象 /obj/。强烈建议您改用 Destroy。 |
DontDestroyOnLoad | 加载新场景时,不自动销毁对象 /target/。 |
FindObjectOfType | 返回第一个类型为 type 的已加载的激活对象。 |
FindObjectsOfType | 返回所有类型为 type 的已加载的激活对象的列表。 |
Instantiate | 克隆 original 对象并返回克隆对象。 |
bool | 该对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用,判断它们是否引用同一个对象。 |
Awake | Awake 在加载脚本实例时调用。 |
FixedUpdate | 如果启用了 MonoBehaviour,则每个固定帧率帧调用该函数。 |
LateUpdate | 如果启用了 Behaviour,则每帧调用 LateUpdate。 |
OnAnimatorIK | 用于设置动画 IK(反向运动学)的回调。 |
OnAnimatorMove | 用于处理动画移动以修改根运动的回调。 |
OnApplicationFocus | 当玩家获得或失去焦点时,发送给所有 GameObject。 |
OnApplicationPause | 当应用程序暂停时,发送给所有 GameObject。 |
OnApplicationQuit | Sent to all game objects before the application is quit. |
OnAudioFilterRead | 如果实现了 OnAudioFilterRead,Unity 将在音频 DSP 链中插入一个自定义滤波器。 |
OnBecameInvisible | OnBecameInvisible 在渲染器对任何摄像机都不可见时调用。 |
OnBecameVisible | OnBecameVisible 在渲染器变为对任意摄像机可见时调用。 |
OnCollisionEnter | 当该碰撞体/刚体已开始接触另一个刚体/碰撞体时,调用 OnCollisionEnter。 |
OnCollisionEnter2D | 当传入碰撞体与该对象的碰撞体接触时发送(仅限 2D 物理)。 |
OnCollisionExit | 当该碰撞体/刚体已停止接触另一个刚体/碰撞体时,调用 OnCollisionExit。 |
OnCollisionExit2D | 当另一个对象上的碰撞体停止接触该对象的碰撞体时发送(仅限 2D 物理)。 |
OnCollisionStay | 对应正在接触刚体/碰撞体的每一个碰撞体/刚体,每帧调用一次 OnCollisionStay。 |
OnCollisionStay2D | 在另一个对象上的碰撞体正在接触该对象的碰撞体时发送每个帧(仅限 2D 物理)。 |
OnConnectedToServer | 成功连接到服务器后在客户端上调用。 |
OnControllerColliderHit | 当该控制器在执行 Move 时撞到碰撞体时调用 OnControllerColliderHit。 |
OnDestroy | This function is called when the MonoBehaviour will be destroyed. |
OnDisable | This function is called when the behaviour becomes disabled () or inactive. |
OnDisconnectedFromServer | 当连接丢失或与服务器断开连接时,在客户端上调用。 |
OnDrawGizmos | 如果您想绘制能够选择并且始终绘制的辅助图标,则可以实现 OnDrawGizmos。 |
OnDrawGizmosSelected | 如果选择了对象,则实现 OnDrawGizmosSelected 来绘制辅助图标。 |
OnEnable | 该函数在对象变为启用和激活状态时调用。 |
OnFailedToConnect | 出于某种原因连接尝试失败时,在客户端上调用。 |
OnFailedToConnectToMasterServer | 在连接到 MasterServer 时发生问题的情况下,在客户端或服务器上调用。 |
OnGUI | 系统调用 OnGUI 来渲染和处理 GUI 事件。 |
OnJointBreak | 在附加到相同游戏对象的关节断开时调用。 |
OnJointBreak2D | 在附加到相同游戏对象的 Joint2D 断开时调用。 |
OnMasterServerEvent | 在从 MasterServer 报告事件时,在客户端或服务器上调用。 |
OnMouseDown | OnMouseDown is called when the user has pressed the mouse button while over the GUIElement or Collider. |
OnMouseDrag | 当用户单击 GUIElement 或 Collider 并仍然按住鼠标时,将调用 OnMouseDrag。 |
OnMouseEnter | 当鼠标进入 GUIElement 或 Collider 时调用。 |
OnMouseExit | 当鼠标不再处于 GUIElement 或 Collider 上方时调用。 |
OnMouseOver | 当鼠标悬停在 GUIElement 或 Collider 上时,每帧调用一次。 |
OnMouseUp | 当用户松开鼠标按钮时,将调用 OnMouseUp。 |
OnMouseUpAsButton | 松开鼠标时,仅当鼠标在按下时所在的 GUIElement 或 Collider 上时,才调用 OnMouseUpAsButton。 |
OnNetworkInstantiate | 在已通过 Network.Instantiate 进行网络实例化的对象上调用。 |
OnParticleCollision | 当粒子击中碰撞体时,将调用 OnParticleCollision。 |
OnParticleTrigger | 当粒子系统中的任何粒子满足触发模块中的条件时,将调用 OnParticleTrigger。 |
OnPlayerConnected | 每当有新玩家成功连接,就在服务器上调用。 |
OnPlayerDisconnected | 每当有玩家与服务器断开连接,就在服务器上调用。 |
OnPostRender | 在摄像机完成场景渲染后,将调用 OnPostRender。 |
OnPreCull | OnPreCull 在摄像机剔除场景前调用。 |
OnPreRender | OnPreRender 在摄像机开始渲染场景前调用。 |
OnRenderImage | OnRenderImage 在图像的所有渲染操作全部完成后调用。 |
OnRenderObject | OnRenderObject 在摄像机渲染场景后调用。 |
OnSerializeNetworkView | 用于在网络视图监视的脚本中自定义变量同步。 |
OnServerInitialized | 每当调用 Network.InitializeServer 并且完成时,对该服务器调用该函数。 |
OnTransformChildrenChanged | 当 GameObject 的变换的子项列表发生更改时,将调用该函数。 |
OnTransformParentChanged | 当 GameObject 的变换的父属性发生更改时,将调用该函数。 |
OnTriggerEnter | 当 Collider other 事件进入该触发器时调用 OnTriggerEnter。 |
OnTriggerEnter2D | 当另一个对象进入附加到该对象的触发碰撞体时发送(仅限 2D 物理)。 |
OnTriggerExit | 当 Collider other 已停止接触该触发器时调用 OnTriggerExit。 |
OnTriggerExit2D | 当另一个对象离开附加到该对象的触发碰撞体时发送(仅限 2D 物理)。 |
OnTriggerStay | OnTriggerStay is called once per frame for every Collider other that is touching the trigger. |
OnTriggerStay2D | 在另一个对象位于附加到该对象的触发碰撞体之内时发送每个帧(仅限 2D 物理)。 |
OnValidate | 加载脚本后或 Inspector 中的值发生更改时,将调用该函数(只能在 Editor 中调用)。 |
OnWillRenderObject | 如果对象可见,则为每个摄像机调用 OnWillRenderObject。 |
Reset | 重置为默认值。 |
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 | 如果启用了 MonoBehaviour,则每帧调用 Update。 |