【问题标题】:IndexOutOfRangeException索引超出范围异常
【发布时间】:2012-05-15 13:09:26
【问题描述】:

我在 Unity 3D 上进行开发,并尝试制作一个 Combobox,其中实现了 here

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

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 + "!" );
    }
}

我有这个错误:

IndexOutOfRangeException:数组索引超出范围。 combobox_test.OnGUI () (at Assets/combobox_test.cs:56)

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

【问题讨论】:

  • 可能 selectedItemIndex 的值大于 4。您能否调试并告诉我们该值?
  • 可能错误在comboBoxControl.GetSelectedItemIndex(); 方法内部。您需要出示该代码。
  • 调试:selectedItemsIndex 值 = 0 和 comboboxList.Length = 0...

标签: c# unity3d


【解决方案1】:

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

 int selectedItemIndex = comboBoxControl.GetSelectedItemIndex();

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

【讨论】:

  • 我检查了 selectedItemIndex 和 selectedItemIndex = 0 的值,comboBoxList 的长度是 0 即使我让 comboBoxList = new GUIContent[5];只是..我不明白
  • @DouzeBriDouzeBra 除了start 方法之外,您是否将值分配给comboBoxList 字段?请发布此代码。
  • @DouzeBriDouzeBra 其他一些代码将comboBoxList 字段设置为空数组。将此字段设为只读,并查看发生编译器错误的位置。
  • 好吧,我喜欢这个错误——“我真的很愚蠢,因为我写的是 start() 而不是 Start() ...谢谢你的回答
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 2011-12-25
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多