英文原文:
https://mirror-networking.gitbook.io/docs/guides/communications/networkbehaviour-callbacks
在正常的多人游戏过程中可能会发生许多与网络行为相关的事件。其中包括主机启动、玩家加入或玩家离开等事件。这些可能的事件中的每一个都有一个关联的回调,您可以在自己的代码中实现该回调,以便在事件发生时采取行动。
当您创建一个继承自 NetworkBehaviour 的脚本时,您可以编写自己的实现来实现这些事件发生时应该发生的情况。为此,您可以使用您自己的实现来覆盖 NetworkBehaviour 类上的虚拟方法,以实现给定事件发生时应该发生的情况。
这是您可以在 NetworkBehaviour 上实现的虚拟方法(回调)的完整列表,以及它们被调用的位置
仅限服务端
- OnStartServer
- 在服务器上spawn时调用
- OnStopServer
- 当行为在服务器上被破坏或unspawn时调用
- OnSerialize
- 当行为在发送到客户端之前被序列化时调用,覆写时确保调用 base.OnSerialize
仅限客户端
- OnStartClient
- 在客户端spawned行为时调用
- OnStartAuthority
- 当行为在spawned时具有权限时调用(例如本地玩家)
- 当行为被服务器授予权限时调用
- OnStartLocalPlayer
- 当行为在本地Player对象上时调用
- OnStopAuthority
- 当从对象中拿走权限时调用(例如,本地播放器被替换但未销毁)
- OnStopClient
- 当对象在客户端被 ObjectDestroyMessage 或 ObjectHideMessage 消息销毁时调用
示例流程
以下是不同模式的一些示例调用顺序
注意:在第一帧之前由 unity 调用 Start,而通常这发生在 Mirror 的回调之后。但是,如果您不调用 NetworkServer.Spawn 与实例化相同的帧,则可能会首先调用 start
注意: OnRebuildObservers 和 OnSetHostVisibility 现在位于 NetworkVisibility 而不是 NetworkBehaviour
服务端模式
当调用 NetworkServer.Spawn 时(例如,当创建新的客户端连接和player时)
- OnStartServer
- OnRebuildObservers
- Start
Host 模式
这些仅在客户端连接时在玩家游戏对象上调用:
- OnStartServer
- OnRebuildObservers
- OnStartAuthority
- OnStartClient
- OnSetHostVisibility
- OnStartLocalPlayer
- Start