问题现象
- 模型来源 :SolidWorks 导出 URDF,模型仅单个基座,无任何可动关节(无
<joint>标签) - 使用插件:Unity Robotics URDF Importer
- 报错信息 :
IndexOutOfRangeException: Index was outside the bounds of the array
(翻译:IndexOutOfRangeException:索引超出数组范围)
报错位置:Controller.cs 中 UpdateDirection、Start 相关行
- 触发时机:导入 URDF 后直接点击 Play 运行即报错
问题根源
- URDF Importer 自带的
Controller.cs为多关节机械臂设计,存在先天缺陷 - 源码中硬编码默认选中索引:
csharp
selectedIndex = 1;
- 无关节模型导入后
ArticulationBody[]长度为 1,有效索引仅0,访问索引1直接数组越界
处理方式
- 打开报错脚本
Controller.cs - 修改
Start()中初始选中索引为0 - 为数组访问添加判空与越界保护
- 无关节时自动禁用控制器避免报错
- 替换为修复版脚本后重新运行,报错消失
备注
该问题为插件官方脚本漏洞 ,非模型错误、非操作失误,仅在导入无关节单一刚体 URDF 时触发。