c# - 数组索引超出范围,在其他帖子中找不到答案
问题描述
我正在使用 Blender 中的混合形状创建设备系统,但现在我添加了另一个混合形状,它不起作用。我收到此错误消息:
数组索引 (5) 超出范围 (size=5)
这是脚本中不起作用的部分:
public void UnequipAll()
{
for (int i = 0; i < currentEquipment.Length; i++)
{
Unequip(i);
}
EquipDefaultItems();
}
void SetEquipmentBlendShapes(Equipment item, int weight)
{
foreach (EquipmentMeshRegion blendShape in item.coveredMeshRegions)
{
targetMesh.SetBlendShapeWeight((int)blendShape, weight);
}
}
第二个脚本:
public class Equipment : Item
{
public EquipmentSlot equipSlot;
public SkinnedMeshRenderer mesh;
public EquipmentMeshRegion[] coveredMeshRegions;
public int armorModifier;
public int damageModifier;
public override void Use()
{
base.Use();
EquipmentManager.instance.Equip(this);
RemoveFromInventory();
}
}
public enum EquipmentSlot { Head, Chest, Legs, Weapon, Feet, Shield, Hands }
public enum EquipmentMeshRegion { Legs, Arms, Feet, Head, Chest, Hands };
解决方案
根据文档,SetBlendShapeWeight()
按照int index
andfloat value
的顺序。
您的代码将 a 转换为 aEquipmentMeshRegion
而int
不是传递实际索引。
尝试用foreach
常规替换循环for
:
for(int index = 0; index < item.coveredMeshRegions.Length; index++)
{
targetMesh.SetBlendShapeWeight(index, weight);
}
推荐阅读
- javascript - JavaScript中reduce方法内部的函数发生了什么?- JavaScript30 练习
- node.js - WSL2 Node.js,JetBrains IDE,如何打开项目
- c++ - 在共享库中重新使用包含 Objective-C 符号的静态库会导致“X 类在 Y 和 Z 中都实现”
- html - 关键帧 CSS SVG 路径上的多个延迟动画
- javascript - momentjs 的时区没有改变
- groovy - 带有字符串变量问题的Jenkinsfile
- python - 停止运行脚本时如何保持 tkinter 窗口打开?
- c# - 来自 ItemsControl 的 ContentPresenter 返回 null
- powerbi - Power BI:基于两列在“转换”中创建一个新列
- html - 动态调整输入角的宽度