Unity 多人游戏框架学习系列十
系列文章目录
unity知识点
文章目录
- 系列文章目录
- 前言
- 一、Multiplayer 组件参考
- 1-1、Network Proximity Checker
- 1-2、NetworkStartPosition
- 1-3、Network Transform
- 1-4、Network Transform Child
- 1-5、Network Transform Visualizer
- 壁纸分享
- 总结
前言
书接上回,承接下回,一系列的。
博客将会介绍多人游戏学习。希望这篇博客对Unity的开发者有所帮助。
大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
欢迎点赞评论哦.下面就让我们进入正文吧 。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Multiplayer 组件参考
1-1、Network Proximity Checker
Network Proximity Checker 组件根据与玩家的接近程度来控制游戏对象对于网络客户端的可见性。
属性 | 功能 |
---|---|
Vis Range | 定义游戏对象的可见范围。 |
Vis Update Interval | 定义游戏对象应检查玩家是否进入其可见范围的频率(以秒为单位)。 |
Check Method | 定义要用于接近度检查的物理类型(2D 还是 3D)。 |
Force Hidden | 勾选此复选框可对所有玩家隐藏此对象。 |
使用 Network Proximity Checker 时,客户端上运行的游戏不具有关于不可见游戏对象的信息。因此具有两个主要优势:减少通过网络发送的数据量;让游戏更难以破解。
此组件依赖于物理系统来计算可见性,因此游戏对象上还必须有碰撞体组件。
具有 Network Proximity Checker 组件的游戏对象还必须具有 Network Identity 组件。在某个游戏对象上创建 Network Proximity Checker 组件时,Unity 还将在该游戏对象上创建 Network Identity 组件(如果还没有此组件)。
1-2、NetworkStartPosition
在创建玩家对象时,NetworkManager 将使用 NetworkStartPosition。NetworkStartPosition 的位置和旋转用于放置新创建的玩家对象。
1-3、Network Transform
Network Transform 组件在网络中同步游戏对象的移动和旋转。请注意,Network Transform 组件仅同步已生成的联网游戏对象。
属性 | 功能 |
---|---|
Network Send Rate (seconds) | 设置每秒的网络更新数。对于在创建后不需要更新的游戏对象,比如玩家生成的非交互式效果(例如,玩家身后的无法交互的尘埃云团),可以将此滑动条设置为 0。 |
Transform Sync Mode | 选择此游戏对象上应发生的同步类型。 |
Sync None | 不同步。 |
Sync Transform | 使用游戏对象的变换组件进行同步。如果物理系统不控制此游戏对象(即,通过脚本或动画移动游戏对象的情况下),请使用此选项。这是默认选项。 |
Sync Rigidbody 2D | 使用 Rigidbody2D 组件进行同步。如果 2D 物理系统控制此游戏对象,请使用此选项。 |
Sync Rigidbody 3D | 使用 Rigidbody 组件进行同步。如果 3D 物理系统控制此游戏对象,请使用此选项。 |
Sync Character Controller | 使用 Character Controller 组件进行同步。仅当使用 Character Controller 时才选择此选项。 |
Movement: | |
Movement Threshold | 设置在不发送移动同步更新的情况下游戏对象可以移动的距离。 |
Snap Threshold | 设置阈值,在此阈值处,如果移动更新使游戏对象远离其当前位置,则游戏对象贴靠到该位置而不是平滑移动。 |
Interpolate Movement Factor | 使用此属性可启用和控制同步运动的插值。该数字越大,游戏对象插入到目标位置的速度越快。如果将其设置为 0,则游戏对象将贴靠到新位置。 |
Rotation: | |
Rotation Axis | 定义应同步的一个或多个旋转轴。默认设置为 XYZ(全 3D)。 |
Interpolate Rotation Factor | 使用此属性可启用和控制同步旋转的插值。该数字越大,游戏对象插入到目标旋转的速度越快。如果将其设置为 0,则游戏对象将贴靠到新旋转。 |
Compress Rotation | 如果压缩旋转数据,则发送的数据量较低,旋转同步的精度较低。 |
None | 选择此选项将不对旋转同步应用任何压缩。这是默认选项。 |
Low | 选择此选项可对旋转同步应用低压缩量。此选项可减少为旋转数据发送的信息量。 |
High | 选择此选项可对旋转同步应用高压缩量。此选项为旋转数据发送最少的信息。 |
Sync Angular Velocity | 勾选此复选框可同步所连接的刚体组件的角速度。 |
此组件会考虑授权,因此本地玩家游戏对象(具有本地授权)将自身位置从客户端同步到服务器,然后同步到其他客户端。其他游戏对象(具有服务器授权)将自身位置从服务器同步到客户端。
具有 Network Transform 组件的游戏对象还必须具有 Network Identity 组件。在某个游戏对象上创建 Network Transform 组件时,Unity 还将在该游戏对象上创建 Network Identity 组件(如果还没有此组件)。
请注意,Network Transform Visualizer 组件是用于调试 Network Transform 组件的有用工具。
1-4、Network Transform Child
Network Transform Child 组件可将游戏对象的子游戏对象的位置和旋转与 Network Transform 组件同步。如果需要同步某个联网游戏对象的独立运动子对象,则应使用此组件。
要使用 Network Transform Child 组件,请将其与 Network Transform 附加到同一个父游戏对象,然后使用 Target 字段来定义要将组件设置应用到的子游戏对象。在一个父游戏对象上可以设置多个 Network Transform Child 组件。
属性 | 功能 |
---|---|
Network Send Rate (seconds) | 设置每秒的网络更新数。对于在创建后不需要更新的游戏对象,比如玩家生成的非交互式效果(例如,玩家身后的无法交互的尘埃云团),可以将此滑动条设置为 0。 |
Target | 要同步的子变换。(请注意,此组件位于父对象而不是子对象上,因此应使用此字段指定子对象)。 |
Movement Threshold | 设置在不发送移动同步更新的情况下游戏对象可以移动的距离。 |
Interpolate Movement Factor | 使用此属性可启用和控制同步运动的插值。该数字越大,游戏对象插入到目标位置的速度越快。如果将其设置为 0,则游戏对象将贴靠到新位置。 |
Interpolate Rotation Factor | 使用此属性可启用和控制同步旋转的插值。该数字越大,游戏对象插入到目标旋转的速度越快。如果将其设置为 0,则游戏对象将贴靠到新旋转。 |
Rotation Axis | 定义应同步的一个或多个旋转轴。默认设置为 XYZ(全 3D)。 |
Compress Rotation | 如果压缩旋转数据,则发送的数据量较低,旋转同步的精度较低。 |
None | 选择此选项将不对旋转同步应用任何压缩。这是默认选项。 |
Low | 选择此选项可对旋转同步应用低压缩量。此选项可减少为旋转数据发送的信息量。 |
High | 选择此选项可对旋转同步应用高压缩量。此选项为旋转数据发送最少的信息。 |
此组件不使用物理系统,可同步子游戏对象的位置和旋转,并向更新后的值进行插值。使用 Interpolate Movement Factor 和 Interpolate Rotation Factor 可自定义插值的速率。
具有 Network Transform Child 组件的游戏对象还必须具有 Network Identity 组件。在某个游戏对象上创建 Network Transform Child 组件时,Unity 还将在该游戏对象上创建 Network Identity 组件(如果还没有此组件)。
1-5、Network Transform Visualizer
Network Transform Visualizer 是一个实用程序组件,用于可视化使用 Network Transform 组件的游戏对象的插值。要使用此组件,请将其添加到已具有 Network Transform 组件的游戏对象,并在 Inspector 中分配一个预制件。该预制件可以是所选的任何项,它将用作游戏对象的传入变换数据的直观表示。
具有本地权限的游戏对象(例如本地玩家)不会进行插值处理,因此不会显示可视化游戏对象。可视化工具仅会显示网络中由其他计算机控制的其他网络化游戏对象(例如其他玩家)。
属性 | 功能 |
---|---|
Visualizer Prefab | 定义用于可视化网络变换目标位置的预制件。 |
正在运行游戏时,预制件被实例化为“可视化工具”游戏对象。当 Network Transform 游戏对象移动时,可视化工具游戏对象会显示在 Network Transform 的目标位置。
可以选择任何所需的可视化工具预制件。下面的示例中使用了半透明的洋红色立方体。
该组件在移动时通常看起来比 Network Transform 游戏对象略微靠前,但流畅度更低。这是因为该组件显示的是直接来自网络的原始位置数据,而不是使用插值来平滑地到达每个新的目标位置。
具有 Network Transform Visualizer 组件的游戏对象必须还必须具有 Network Identity 组件。在某个游戏对象上创建 Network Transform Visualizer 组件时,Unity 还将在该游戏对象上创建 Network Transform 组件和 Network Identity 组件(如果还没有这些组件)。
注意:确保选择用作可视化游戏对象的预制件没有附加碰撞体,或任何其他可能影响游戏运行的组件!
壁纸分享
总结
书接上回,承接下回,一系列的。欲知后事如何,且听下回分解。
本次总结的就是这样的, 有需要会继续增加功能
如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!