Chain(链条)
链条沿样条路径或仿真路径移动组件,用于物料搬运系统、换刀器和其他需要连续线性运动的应用。
新功能:Burst 编译器优化在 realvirtual 6.0.9 (beta) 中添加,为链条仿真提供 20-33 倍的性能提升。
概述
链条提供多个组件沿定义路径的连续移动。这对于建模由链条驱动的物料搬运系统或换刀器非常有用。它们始终连接到 Drive 组件,该组件控制链条的移动速度和位置。链条元素在仿真期间沿样条自动创建和定位。
推荐的路径定义:Unity Splines。 在与 Chain 组件相同的 GameObject 上添加 Unity SplineContainer 组件。这是唯一接收错误修复和性能改进的路径定义。
已弃用:旧版点和切线样条。 旧的自定义样条系统(Spline 组件及带有 InTangent/OutTangent 变换的 P1..Pn 子 GameObject)不再维护。现有场景可继续工作,但不会收到错误修复 — 已知问题包括非对称元素放置和两个链条共享一个驱动时的漂移。请迁移到 Unity SplineContainer。DemoChain 场景并排展示了两种变体;Chain_UnitySplineHorizontal 和 Chain-UnitySplineVertical 是参考设置。
仿真路径功能需要 realvirtual Simulation,不包含在基础 realvirtual 包中。realvirtual Simulation 中有单独的演示。
您可以在 Assets/realvirtual/Scenes/DemoChain 找到演示链条功能的演示场景。
基本概念
链条始终连接到驱动,因此链条的移动取决于当前驱动位置和速度。通常,您应使用 Axis 设置为 Virtual 的 Drive 来移动链条。
一个或多个链条元素连接到链条。这些链条元素在仿真启动时由链条自动创建。通常,这些链条元素应为项目中的预制件 (Prefab)。
Chain 脚本需要在同一 GameObject 上有 IChain 实现。使用 Unity SplineContainer(通过 ChainUnitySpline 组件)来定义路径。旧版点和切线样条已弃用 — 请参阅本页顶部的警告。
属性
设置
Chain Orientation
决定链条是水平还是垂直移动。
- 类型:枚举 (Horizontal, Vertical)
- 默认值:Horizontal
- 用例:根据您的机械系统方向进行设置
Chain Element
沿样条的各个链条元素使用的预制件。
- 类型:GameObject 引用
- 默认值:None
- 用例:分配您的自定义链节或载体预制件
Connected Drive
控制链条移动的 Drive 组件。
- 类型:Drive 引用
- 默认值:None
- 用例:连接到具有 Virtual 轴的 Drive 以进行链条控制
Number of Elements
沿样条创建的链条元素总数。
- 类型:整数
- 默认值:10
- 范围:1 到 1000
- 用例:根据样条长度和元素间距需求调整
Start Position
放置第一个元素时沿样条的偏移位置。
- 类型:浮点
- 默认值:0
- 范围:0 到样条长度
- 用例:调整起始位置以与机械系统对齐
Calculate Delta Position
自动计算链条元素之间的间距。
- 类型:布尔
- 默认值:true
- 用例:启用以均匀分布,禁用以自定义间距
Scaled On Fixed Length
为外部驱动定位维护恒定的总样条长度。
- 类型:布尔
- 默认值:false
- 用例:当外部驱动器提供元素位置数据时启用
性能优化
Burst 编译器优化
此功能在 realvirtual 6.0.9 (beta) 中添加
Chain 组件支持 Unity 的 Burst 编译器,在仿真大量链条元素时可大幅提升性能。此优化使用 SIMD(单指令多数据)编译为原生代码,提供:
性能基准:
- 运动学元素 (MoveRigidBody=false):29-33 倍加速
- 物理元素 (MoveRigidBody=true):19-23 倍加速
工作原理
Burst 优化根据您的链条元素配置以两种模式运行:
运动学模式(最高性能)
- 使用 Unity 的 TransformAccessArray 进行并行批处理
- 适用于无需物理交互的可视链条元素
- 实现 29-33 倍性能提升
- 在 ChainElements 上设置 MoveRigidBody=false 以使用此模式
物理模式(高性能)
- 使用传统 Rigidbody 更新和 Burst 编译的计算
- 当链条元素需要碰撞器交互时需要
- 实现 19-23 倍性能提升
- 在 ChainElements 上设置 MoveRigidBody=true 以使用物理
设置说明
一键设置(推荐)
如果未启用 Burst 优化,您将在 Chain Inspector 中看到警告消息,包含性能信息和设置按钮。

- 在 Chain Inspector 中点击 Enable Burst Optimization (Install Package & Define) 按钮
- Unity 将自动:
- 安装 Burst 编译器包
- 将
REALVIRTUAL_BURST添加到脚本编译符号 - 启用 Burst 优化重新编译脚本
- 如有提示,重启 Unity
手动设置
- 通过 Package Manager 安装 Unity Burst 编译器包
- 将
REALVIRTUAL_BURST添加到 Project Settings > Player > Script Compilation Symbols - Unity 将自动以 Burst 优化重新编译
设置完成后
启用后,Chain Inspector 显示活动优化的确认:
优化链条元素
为获得最佳性能,请根据 ChainElements 的用途进行配置:
仅可视元素(最快)

- 在 ChainElement 组件上设置 MoveRigidBody=false
- 用于不需要物理的链节、载体或夹具
- 通过运动学批处理实现 29-33 倍加速
物理交互元素
- 在 ChainElement 组件上设置 MoveRigidBody=true
- 用于具有碰撞器且需与其他对象交互的元素
- 仍通过 Burst 优化的物理更新实现 19-23 倍加速
ChainElement Inspector 提供内联性能提示,帮助您选择正确的设置。
高级设置
Spline Bake Resolution

- 控制 Burst 作业使用的预计算样条采样数
- 值越高 = 插值越平滑但内存使用越多
- 默认值:100 个采样
- 根据样条复杂性和可用内存调整
Use Burst Optimization
- 在运行时启用/禁用 Burst 处理
- 定义 REALVIRTUAL_BURST 时默认启用
- 用于性能比较或调试
常见用例
高速斗式提升机
- 在料斗上设置 MoveRigidBody=false 以获得 29-33 倍加速
- 料斗无需物理交互即可跟随路径
- 非常适合物料运输可视化
带负载检测的悬挂式输送机
- 在载体上设置 MoveRigidBody=true 以实现基于物理的负载拾取
- 在保持碰撞检测的同时仍实现 19-23 倍加速
- 当载体与传感器或零件交互时必需
混合配置
- 在同一链条中组合运动学和物理元素
- 仅在需要的地方使用物理(如拾取/放置区域)
- 在保持所需功能的同时优化性能
技术细节
Burst 优化通过以下方式工作:
- 将样条位置和切线预计算到原生数组中
- 并行批处理所有元素位置更新
- 使用 SIMD 指令进行向量化计算
- 最小化托管到原生的转换
系统自动处理:
- 样条位置插值
- 元素方向的切线计算
- 与驱动事件同步的批处理更新
- 原生数组的内存管理
使用示例
基本链条设置
- 使用 Unity Splines 或自定义样条创建样条路径
- 将 Chain 组件添加到样条 GameObject
- 添加 ChainUnitySpline 组件以集成 Unity Splines
- 分配 Chain Element 预制件
- 连接到具有 Virtual 轴的 Drive 组件
- 根据您的需求设置 Number of Elements
Unity Splines 集成
我们推荐使用 Unity Splines 作为链条路径。为此,必须安装 Unity Splines 包。
安装 Unity Splines 包后,可按以下方式定义链条:
- 在 Project Settings > Player 中,在 Script Compilation Symbols 下添加
REALVIRTUAL_SPLINES以在 realvirtual 链条中使用 Unity Splines - 在 Hierarchy 中右键单击,从 Spline 菜单中选择所需的基础样条
- Unity 在场景视图中提供样条编辑模式以调整样条控制点。对于每个样条控制点,Unity 还显示该点处的向上方向(红色箭头)。如果您要设置垂直链条,这很重要
- 将 ChainUnitySpline 和 Chain 组件添加到创建的 GameObject 上
链条设置完成后,即可与 ChainElements 和驱动一起使用。
垂直链条配置
要构建垂直链条,请按以下步骤操作:
- 从右下角锚点开始,沿正 Z 方向顺时针构建样条
- 保持恰好 90 度的垂直角度。避免倾斜以防止与表示高度差的插值曲线不对齐
- 请注意,这些说明目前仅适用于具有四个锚点(且不超过四个)的样条
- 确保链条元素的正面也朝向正 Z 方向。此方向对于父 GameObject 是必需的
- 将 Chain Orientation 设置为 Vertical
💡 提示
对于垂直链条,使用恰好四个锚点并保持精确的 90 度角,以防止与插值曲线不对齐。
Editor 工具
样条构建(已弃用)
本节描述旧版点和切线样条。它不再维护 — 请改用 Unity Splines。此处的描述作为现有场景的参考保留。
要扩展样条或创建第一个点,您可以点击 Spline 上的 Extend 按钮。这会生成一个带有 2 个切线点的点。您可以像任何 GameObject 一样移动这些点来构建样条。这些 GameObject 的顺序也定义了样条中点的顺序。如果选择 Loop,样条将闭合,最后一个点连接到样条的第一个点。
Unity Splines Editor
- 场景视图中的可视样条编辑
- 带手柄的控制点操作
- 用于垂直链条设置的向上方向指示器(红色箭头)
- 实时样条预览和调整
另请参见
- Chain Element - 沿链条移动的单个元素
- Drive - 链条移动的电机控制
- Spline 文档 - Unity Splines 包参考
© 2025 realvirtual GmbH https://realvirtual.io - 版权所有。未经出版商事先书面许可,不得以任何形式或任何方式(包括打印、保存、复印、录制或其他电子或机械方法)复制、分发或传播本出版物的任何部分。