NetworkBehaviour 回调
NetworkBehaviour 回调
在正常的多人游戏过程中,与网络行为相关的许多事件可能会发生。这些事件包括主机启动、玩家加入或玩家离开等。每个可能发生的事件都有一个关联的回调函数,您可以在自己的代码中实现以在事件发生时采取行动。
当您创建一个从 NetworkBehaviour 继承的脚本时,您可以编写自己的实现,以处理这些事件发生时应该发生的情况。为此,您需要重写 NetworkBehaviour 类上的虚拟方法,使用您自己的实现来处理给定事件发生时应该发生的情况。
这是您可以在 NetworkBehaviour 上实现的所有虚拟方法(回调)的完整列表,以及它们被调用的位置
仅服务器端
OnStartServer
当行为在服务器上生成时调用
OnStopServer
当行为在服务器上被销毁或取消生成时调用
OnSerialize
在将行为发送到客户端之前对其进行序列化时调用,当重写时,请确保调用
base.OnSerialize
仅客户端
OnStartClient
当行为在客户端生成时调用
OnStartAuthority
当行为在生成时具有权限时调用(例如本地玩家)
当服务器授予行为权限时调用
OnStartLocalPlayer
当行为在本地玩家对象上时调用
OnStopAuthority
当对象被剥夺权限时调用(例如本地玩家被替换但未被销毁)
OnStopClient
当对象在客户端上被
ObjectDestroyMessage或ObjectHideMessage消息销毁时调用
示例流程
以下是不同模式的示例调用顺序
注意:
Start在第一帧之前由Unity调用,通常在Mirror的回调之后调用。但是,如果您在instantiate的同一帧中没有调用NetworkServer.Spawn,则Start可能会首先被调用
注意:
OnRebuildObservers和OnSetHostVisibility现在在NetworkVisibility(网络可见性)中,而不是在NetworkBehaviour(网络行为)中
服务器模式(Server mode)
当调用NetworkServer.Spawn时(例如,当新客户端连接并创建玩家时)
OnStartServerOnRebuildObserversStart
客户端模式(Client mode)
当为客户端生成本地玩家时
OnStartAuthorityOnStartClientOnStartLocalPlayerStart
主机模式(Host mode)
这些仅在玩家游戏对象(Player Game Objects)上在客户端连接时调用:
OnStartServerOnRebuildObserversOnStartAuthorityOnStartClientOnSetHostVisibilityOnStartLocalPlayerStart
最后更新于
这有帮助吗?