[Unity Mirror] NetworkBehaviour Callbacks

81 篇文章 29 订阅

英文原文:

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Mirror是一个网络库,NetworkBehaviour是它提供的一个组件,用于实现在多个客户端之间同步游戏对象的状态和行为。下面是NetworkBehaviour的生命周期函数: 1. OnStartServer(): 当组件启动时,只在服务器上调用一次。 2. OnStartClient(): 当组件启动时,只在客户端上调用一次。 3. OnStartLocalPlayer(): 当组件启动时,只在本地玩家的客户端上调用一次。 4. OnStopServer(): 当组件停止时,只在服务器上调用一次。 5. OnStopClient(): 当组件停止时,只在客户端上调用一次。 6. OnStopLocalPlayer(): 当组件停止时,只在本地玩家的客户端上调用一次。 7. OnServerInitialized(): 当服务器初始化时,在所有客户端上调用一次。 8. OnClientConnect(NetworkConnection conn): 当客户端连接到服务器时,在该客户端上调用一次。 9. OnServerConnect(NetworkConnection conn): 当客户端连接到服务器时,在服务器上调用一次。 10. OnClientDisconnect(NetworkConnection conn): 当客户端从服务器断开连接时,在该客户端上调用一次。 11. OnServerDisconnect(NetworkConnection conn): 当客户端从服务器断开连接时,在服务器上调用一次。 12. OnClientError(NetworkConnection conn, int errorCode): 当客户端遇到错误时,在该客户端上调用一次。 13. OnServerError(NetworkConnection conn, int errorCode): 当服务器遇到错误时,在服务器上调用一次。 14. OnStartAuthority(): 当组件获取到权限时,在所有客户端上调用一次。 15. OnStopAuthority(): 当组件失去权限时,在所有客户端上调用一次。 这些函数可以在NetworkBehaviour的子类中被重写,以实现网络同步和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值