IndexOutOfRangeException

本文关键字:IndexOutOfRangeException | 更新日期: 2023-09-27 18:34:08

我在Unity 3D上开发,我试图用这里实现的类制作一个组合框

现在在我的测试课上,我这样做:

public class combobox_test : MonoBehaviour {
    public GUIContent[] comboBoxList;
    private ComboBox_Class comboBoxControl = new ComboBox_Class();
    public GUISkin mySkin;
    void start(){
        comboBoxList = new GUIContent[5];
        comboBoxList[0] = new GUIContent("Thing 1");
        comboBoxList[1] = new GUIContent("Thing 2");
        comboBoxList[2] = new GUIContent("Thing 3");
        comboBoxList[3] = new GUIContent("Thing 4");
        comboBoxList[4] = new GUIContent("Thing 5");
    }

    void OnGUI(){
        GUI.skin = mySkin;
        int selectedItemIndex = comboBoxControl.GetSelectedItemIndex();
        selectedItemIndex = comboBoxControl.List(new Rect(50, 100, 100, 20),       comboBoxList[selectedItemIndex].text, comboBoxList,GUI.skin.GetStyle(""));
        //GUI.Label( new Rect(50, 70, 400, 21),"You picked " + comboBoxList[selectedItemIndex].text + "!" );
    }
}

我有这个错误:

索引

超出范围异常:数组索引超出范围。 combobox_test。OnGUI () (在资产/combobox_test.cs:56)

我尝试了一些在不同网站上找到的解决方案,但没有任何效果。

IndexOutOfRangeException

当尝试访问大于或等于其长度的数组中的索引时,会引发 IndexOutOfRangeException。我相信你的问题是

 int selectedItemIndex = comboBoxControl.GetSelectedItemIndex();

给出一个大于 comboBoxList 容量的值(例如 >= 5 ),因此当您尝试访问comboBoxList[selectedItemIndex]时,会抛出 IndexOutOfRangeException。