由于各种原因,Unity Networking (UNet) 的某些功能已从 Mirror 中删除或修改。此页面将标识所有更改和删除的功能、属性和方法、更改或删除的原因以及可能的替代方案。
注意:本文档中的某些更改可能适用于 Asset Store 即将发布的版本。
Match 命名空间和 Host 迁移
作为 Unity 服务的一部分,整个命名空间已被移除。它一开始效果不佳,并且作为核心网络包的一部分非常复杂。我们预计这将与其他后端服务一起通过与 Mirror 集成的独立应用程序提供。
Network Server Simple
这太复杂了,而且对于它所做的一点事情来说,维护起来也不切实际,所以被删除了。无论是否有我们的运输工具,都有更简单的方法来制作一个基本的监听服务器。
Couch Co-Op
通过移除这个容易实现的成果,核心网络被大大简化。它有很多错误,而且太复杂了,不值得修复。对于那些需要这样的东西的人来说,可以考虑将一个不可见的玩家预制件定义为一个信息管道,它可以产生具有客户端权限的实际玩家预制件。所有的输入将通过管道预制件来控制玩家对象。
消息类型
MsgType 枚举已被删除。所有消息类型都是动态生成的。请改用Send。
Network Transform
Network Transform已被完全替换,因此它只同步位置、旋转和缩放,具有控制选项以及是否对它们进行插值,并使用快照插值。它还有一堆虚拟方法,还有一个用于制作您自己的派生版本的脚本模板。刚体支持被移除,取而代之的是一个单独的网络刚体组件。
Network Animator
Network Animator 也得到了简化,因为它将所有 Animator 参数批处理到单个更新消息中。
SyncVar 挂钩参数
SyncVar 属性值现在在调用钩子之前更新,并且钩子现在需要两个与属性相同类型的参数:oldValue 和 newValue
SyncListSTRUCT
请改用 SyncList。
SyncList Classes
- SyncListString 被 SyncList< string > 取代。
- SyncListFloat 被 SyncList< float > 取代。
- SyncListInt 被 SyncList< int > 取代。
- SyncListUInt 被 SyncList< uint > 取代。
- SyncListBool 被 SyncList< bool > 取代。
SyncList 操作
- OP_REMOVE 被 OP_REMOVEAT 取代
- OP_DIRTY 被 OP_SET 取代
SyncDictionary 操作
- OP_DIRTY 被 OP_SET 取代
SyncObject
- 这现在是一个类而不是一个接口。
- Flush - 改用 ClearChanges。
Quality of Service标志
在经典的 UNet 中,QoS 标志用于确定数据包如何到达远程端。例如,如果您需要在队列中对数据包进行优先级排序,您可以指定一个高优先级标志,然后 Unity LLAPI 将接收并适当地处理该标志。不幸的是,这给传输层带来了很多额外的工作,并且由于依赖太多魔法的错误代码,一些 QoS 标志没有按预期工作。
在 Mirror 中,QoS 标志被替换为“通道”系统。虽然默认传输 Telepathy 根本不使用通道,因为它是基于 TCP 的,但其他传输,例如 Ignorance 和 LiteNetLib,确实支持它们。
当前定义的通道是:
- Channels.Reliable = 0
- Channels.Unreliable = 1