unity3d Unity在不应该的情况下对游戏对象的列表/数组抛出indexoutofbounds错误

uqdfh47h  于 2023-02-13  发布在  其他
关注(0)|答案(1)|浏览(146)
public void SwitchWeapon(int index)
{
    Debug.Log(index);
    foreach(GameObject weapon in weapons)
    {
        weapon.GetComponent<Renderer>().enabled = false;
    }
    pc.weapon = weapons[0];
    weapons[index].GetComponent<Renderer>().enabled = true;
}

这段代码应该将pc.weapon(a gameobject)设置为weapons[0],这是一个游戏对象列表,但是它抛出了一个indexoutofbounds错误。
当我在列表上运行debug.log时,它返回[],但当我运行debug.log(weapons[0].name)时,它返回正确的名称。我尝试从数组切换到列表,但这没有改变任何东西。

hgqdbh6s

hgqdbh6s1#

public List<whatever-it-is> weapons = new List<whatever-it-is>();

你可以在获取武器物品之前添加一个if语句,比如:

if(index >= 0 && index < weapons.count)
{
    //weapons[index]......
}

相关问题