2019 更新日志
v6.3.0 - 2019 年 12 月 9 日
添加:SyncMode 选择器现在适用于客户端拥有的任何场景对象上的组件,而不仅仅是玩家对象,例如宠物。
添加:MessageBase 现在完全支持继承。
添加:Room 示例现在有一个 UI 按钮,主机可以将所有客户端返回到 Room 场景,并进行其他改进。
修复:ReplacePlayerForConnection 现在对现有场景对象有效,只要另一个玩家没有拥有目标对象。
修复:isClient 和 isServer 现在在 Start 和 OnStartClient / OnStartServer 中对网络对象为真。
修复:在调用 OnStartClient 和 OnStartLocalPlayer 之前,hasAuthority 现在已设置。
更改:connectionToClient 现在用于分配客户端权限。
更改:在许多方面,主机玩家的行为更像客户端,并且将更好地显示错误。
更改:ReplacePlayerForConnection 现在有一个可选的布尔值,用于保留先前对象的权限(默认 = false)。
移除:
NetworkServer.SpawnWithClientAuthority已弃用,推荐使用NetworkServer.Spawn的重载。
v5.0.2 - 2019 年 11 月 3 日
添加:SyncList 和 SyncSet 自定义 Equality Comparer 支持。
添加:可以为 Cmd 和 Rpc 中的任何类型实现自定义序列化器。
修复:如果没有更改,SyncVar 钩子现在不再在主机中调用。
修复:Network Identity 在 RemoveClientAuthority 中不再抛出空引用异常。
修复:服务器传输现在在场景更改期间暂停,以防止错误消息。
修复:SyncList、SyncDictionary 和 SyncSet 现在使用自定义 IEnumerator 以避免内存分配。
修复:在编辑预制时,sceneID 在某些情况下不再重置。
更改:PreprocessorDefine 代码移动到 CompilerSymbols 文件夹,以避免缺失符号导致无法将符号添加到项目的悖论。
更改:主机玩家不再默认分配权限给所有对象。
更改:命令现在不再绕过 Host 玩家的序列化,使调试更容易。
更改:本地连接现在维护自己的消息队列。
更改:Transport.Available 现在是抽象的。
移除:Network Identity:本地玩家权限已被移除,因为不再需要。
v4.0.7 - 2019 年 10 月 3 日
添加: 认证器(Authenticators) 支持在连接阶段对客户端进行身份验证。
添加: Profiler 事件。这些事件可以被网络 Profiler(Network Profiler)订阅,以提供可视化信息。
添加: 传输现在在 Profiler 事件中包括通道。
添加: 传输抽象类现在支持向连接 ID 列表发送消息。
修复: SceneMessage 现在具有 sceneOperation 枚举,以便客户端可以正确处理附加场景。
修复: NetworkClient 处理程序现在在关闭时被清除。
修复: 当客户端连接失败或被拒绝时,离线场景不再重新加载。
修复: 当服务器停止时,开始位置索引现在重置为零。
修复: 网络房间玩家现在都在 DontDestroyOnLoad 中,因此它们不会在游戏场景中重新生成。
修复: 网络房间示例玩家控制器在禁用时恢复主摄像机。
修复: 具有不同同步间隔的组件未向客户端发送更新。
修复: 在某些情况下,编织器不会编织一些外部程序集。
修复: Network Animator 现在为新客户端进行完全同步。
修复: Network Behaviour 检查器现在显示私有 SyncVars 的 SyncMode。
修复: 从继承类调用父类的 Commands 和 Rpcs 现在按预期工作。
修复: 当尝试连接到不存在的主机时,Telepathy 不再挂起。
修复: Websockets 传输现在通过
ServerGetClientAddress正确返回客户端端点信息。修复: WebGL 构建现在与 ArraySegment 正常工作。
更改: Mirror 现在在发送端不再产生垃圾内存分配。
一些传输可能仍然会有少量垃圾分配。
更改: 弃用了 AddPlayerMessage 中的 extraMessage byte[],改为更简单的方法来处理自定义玩家(Custom Players)。
这是一个破坏性更改: 虚拟方法 OnServerAddPlayer 失去了 AddPlayerMessage 参数。
更改:
NetworkIdentity.RemoveAuthorityForConnection现在更容易使用: 不再需要提供当前的 "所有者"。更改: 将
NetworkConnection.playerController重命名为identity... 详细信息请参阅弃用(Deprecations)。更改: 大厅系统重命名为房间(Room),以更好地对齐名称并为未来的大厅框架让路。
v3.17.4 - 2019 年 9 月 4 日
添加: 通过扩展方法添加自定义网络读取器和写入器。
添加: 在组件上添加网络同步模式选择器,以同步给观察者(默认)或仅同步给所有者。
添加: SyncVars 现在支持其他程序集中的结构体和枚举。
添加: 支持读取和写入数组段。
添加: 网络动画控制器现在支持层。
添加: 新的虚拟方法 OnServerChangeScene 到网络管理器。
添加: 为智能感知和未来生成的类文档添加 XML 摘要注释。
更新示例和文档。
修复: 对于预制体变体,SceneID 未设置为 0。
修复: 在场景更改时观察者未正确重建。
修复: SyncVar 钩子在主机模式下无法更改其他 SyncVars。
修复: Telepathy 未在接受的客户端上设置套接字选项。
修复: 捕获 IL2CPP 错误。
修复: Telepathy 和 Websockets 现在连接 ID 从 1 开始而不是从 2 开始。
修复: Websockets 对 SSL 的支持已恢复。
修复: 如果自动创建已禁用,网络管理器不再抱怨缺少玩家预制体。
修复: 在 Network Transform 中移除了一个垃圾分配。
修复: 在某些情况下不必要地调用 NetworkClient.Ready,例如 SceneMessages。
更改: 文档已移至网站,并实施了 API 生成的文档。
更改: AddPlayerForConnection 处理程序现在是内部的,以保持安全检查完整性。
更改: 一堆消息转换为值类型以提高性能。
v3.11.6 - 2019 年 7 月 10 日
修复: Telepathy IPv4、IPv6 和 FQDN 现在应该都可以正常工作。
修复: 在 UWP 构建中修复了 TelepathyTransport 错误。
修复: 现在更好地处理 OnApplicationQuit。
修复: 性能和内存分配改进。
更改: 现在包含 Telepathy 源码而不是 DLL。
v3.10.10 - 2019 年 6 月 19 日
添加: Scene Message 现在支持 SceneMode(Normal / Additive)和 PhysicsMode(2D / 3D)的参数。
添加: ClientScene.Send 现在具有可选的 ChannelId 参数。
添加: 在示例文件夹中添加 ASMDEF。
添加: 支持发送和接收 ArraySegment。
添加: 在 SyncLists 中添加 IReadOnlyList。
修复: 在某些情况下,网络管理器未正确切换到正确的场景。
修复: 在 WebGL 中未找到 ListServer Ping。
修复: TelepathyTransport.GetMaxPacketSize 使用新的可配置最大大小。
修复: 大幅减少内存分配和垃圾回收。
更改: 为了更好的 VR 支持,现在使用 transform.localPosition 和 transform.localRotation。
移除: Websockets 发送队列(从未起作用)和 SSL(暂时因为它不起作用)。
v3.6.7 -- 2019 年 4 月 28 日
更改: NetworkReader 现在使用 ArraySegment 来最小化分配。
v3.6.6 -- 2019 年 4 月 24 日
修复: 撤销了两个内部重构提交,导致意外后果。
v3.6.5 -- 2019 年 4 月 23 日
修复: 适配 Unity 2019.1。
修复: 错误地指示预制件缺少场景 ID 的错误。
修复: 在不分配的情况下,OnDeserializeSafely 现在可以正常工作。
修复: Weaver 不写入符号文件,导致 Visual Studio 中断点无法工作。
修复: Network Identity SceneID 生成现在使用 RNG 加密服务提供程序。
修复: Additive 示例中的场景光照。
修复: 在没有 NetworkStartPosition 的情况下,实例化时现在会尊重 Player Prefab 的变换细节。
移除: 从 Unity 包生成中移除 Tests 文件夹(无终端用户价值)。
v3.5.9 -- 2019 年 4 月 12 日
修复: Network Manager 循环模式现在使用 NetworkStartPosition 对象,并使用层次结构兄弟顺序。
修复:
Start()中的 IsLocalPlayer 现在通过 OwnerMessage 和 SpawnPrefabMessage 可靠准确。修复: Weaver 和 Cecil 中的堆栈溢出问题。
修复: 传递给 weaver 的程序集路径已更正。
修复: 在 SyncVars、Commands 和 Rpcs 中减少了枚举带宽。
修复: 为已删除的代码文件添加占位符文件,以便更新效果更好。
更改: Network Manager 的
isHeadless现在是一个静态属性,从IsHeadless()更改而来。
v3.5.3 -- 2019 年 4 月 10 日
修复: Network Manager 和其他组件的重写中的异常错误被错误地消除。
修复: 大厅系统有时不会生成并将游戏玩家预制件交换到游戏场景中。
修复: 在主机模式下不再设置 Application.targetFrameRate。
更改: Telepathy: 将 MaxMessageSize 拆分,以允许为客户端和服务器设置不同的值。
v3.4.9 -- 2019 年 4 月 6 日
添加: 语义化版本控制 (这就是我们从 1.6 跳到 3.4.9 的原因).
添加: SyncDictionary (同步字典).
添加: SyncHashSet (同步哈希集).
添加: SyncSortedSet (同步排序集).
添加: SyncList 和 SyncDictionary 现在支持所有 IList 和 IDictionary 派生类型,分别.
添加: SyncVars (同步变量) 文档.
添加: SyncEvents (同步事件) 文档.
添加: Network Transform 现在有 NoRotation 选项.
添加: 生成负载现在包括缩放(scale)、位置和旋转.
添加: 通用的
IMessageBase以允许结构化消息类型.添加: Weaver 现在支持 Vector2Int 和 Vector3Int.
添加: 列表服务器示例.
添加: 叠加场景示例.
修复: SyncLists 现在对基本类型和结构体正常工作.
修复: SyncVar Hooks 现在在调用钩子之后将更新本地属性值.
您不再需要在钩子方法中手动更新本地属性的代码行.
修复: 主机不应在传输上调用 Disconnect.
修复: NetworkAnimimator 现在支持多达 64 个动画参数.
修复: Network Manager
StartServer不再假设场景零是默认场景...现在使用GetActiveScene.修复:
NetworkServer.Shutdown现在将netId重置为零.修复: 当客户端加入并且
OnRebuildObservers/OnCheckObserver被覆盖时,观察者现在被正确重建.修复: NetworkProximityChecker: 在极少情况下,玩家可能会被排除在观察者重建之外.
修复: NetworkLobbyPlayer
OnClientReady现在正常工作.修复: 当仅服务器时,NetworkLobbyPlayer 的移除按钮现在对 P1 可见.
修复: NetworkLobbyManager 的
pendingPlayers和lobbySlots列表现在对继承者是公开的.修复: 离线场景切换现在通过
StopClient()正常工作.修复: 更新了 Pong 示例.
修复: 源 Weaver 正在删除 PDB 文件,导致断点和调试无法工作.
更改: TargetRpc 的 NetworkConnection 参数现在是可选的...调用客户端的 NetworkConnection 是默认值.
更改: 将移动示例替换为坦克示例.
更改: NetworkClient 函数现在全部是静态的,因此单例已被移除. 直接使用 NetworkClient.
更改: SyncList 现在直接支持结构体,使 SyncListSTRUCT 过时.
移除: SyncListSTRUCT - 使用 SyncList 代替.
移除: NetworkClient.ShutdownAll 已过时 -- 使用 NetworkClient.Shutdown 代替.
v1.6 -- 2019 年 3 月 14 日
修复:Websockets 传输移至 Mirror.Websocket 命名空间。
修复:网络动画控制器(Network Animator)带宽滥用问题。
修复:网络动画控制器(Network Animator)浮点同步 bug。
修复:网络对象的持久场景 ID。
更改:传输的文档。
更改:Weaver 现在是完整源码...终于!
更改:ClientScene.AddPlayer 的第二个参数现在是
byte[] extraData,而不是MessageBase extraMessage。请参考这里的代码示例 here 来查看如何更新您的代码。
更改:网络管理器(Network Manager)-- 无头自动启动移至
Start(),而不是Awake()。更改:移除所有消息的消息 ID - 详细信息请参阅网络消息。
消息 ID 现在根据消息名称自动生成。
以前您会调用 Send(MyMessage.MsgId, message),现在您调用 Send(message)。
移除:Groove 传输的文档 - 请改用 Websockets 传输。
v1.5 -- 2019 年 3 月 1 日
添加:迁移工具(Migration Tool),可(大部分)自动转换从 UNet 迁移过来的内容。
添加:完全支持 WebSockets 和 WebSocketsSecure 以替代 UNet LLAPI。
添加:传输多路复用器(Transport Multiplexer)- 允许同时使用多个传输。
添加:NetworkLobbyManager 和 NetworkLobbyPlayer,附带示例游戏。
添加:网络管理器(Network Manager)中可配置的服务器 Tick 率。
添加:新的虚拟函数 OnClientChangeScene 在执行 SceneManager.LoadSceneAsync 之前触发。
添加:Weaver 的单元测试。
修复:消除了许多地方的垃圾分配(还有更多工作要做,我们知道)。
修复:NetworkProximityChecker 现在使用
OverlapSphereNonAlloc和OverlapCircleNonAlloc。修复:当客户端加入时,SyncVar 钩子未触发的问题。
修复:网络管理器(Network Manager)不再假设自己在场景(0)中。
修复:网络动画控制器(Network Animator)不再限制为 6 个变量。
修复:TelepathyTransport 在禁用时仍传递消息的问题。
更改:最低 Unity 版本:2018.3.6
移除:SceneAttribute.cs(合并到 CustomAttributes.cs)。
移除:
NetworkClient.allClients(改用NetworkClient.singleton)。移除:
NetworkServer.hostId和NetworkConnection.hostId(LLAPI 的遗留物)。移除:
NetworkConnection.isConnected(网络连接始终连接)。移除:
Transport.GetConnectionInfo(改用ServerGetClientAddress)。
v1.4 -- 2019 年 2 月 1 日
添加: 组件的 HelpURL 属性。
添加: 无头构建的自动 targetFramerate。
添加: ByteMessage 到 Messages 类。
修复: 连接状态可以被正确取消。
修复: 网络变换插值应用于客户端自己的对象。
修复: 对象生成时具有正确的旋转。
修复: SceneId 分配。
修复: 更改的 syncInterval 没有保存...现在已保存。
修复: Additive 场景加载。
更改: Mirror 现在是完整源代码 -- 不再使用 DLL。
更改: 传输现在是组件 -- TCP, UDP, WebGL, Steam。
更改: Transport 类现在分发 Unity 事件。
更改:
NetworkServer.SendToClientOfPlayer现在使用NetworkIdentity。更改:
NetworkServer.SendToObservers现在使用NetworkIdentity参数。更改:
NetworkServer.SendToReady现在使用NetworkIdentity。更改:
NetworkServer.DestroyPlayerForConnection现在使用NetworkIdentity.spawned。更改:
NetworkConnection.Dispose现在使用NetworkIdentity.spawned。更改:
NetworkReader.ReadTransform现在使用NetworkIdentity.spawned。更改: 网络变换重新实现 -- 物理移除,代码简化。
移除:
NetworkClient.hostPort(端口由传输层处理)。移除:
NetworkServer.FindLocalObject(使用NetworkIdentity.spawned[netId]替代)。移除:
ClientScene.FindLocalObject(使用NetworkIdentity.spawned[netId]替代)。
最后更新于
这有帮助吗?