0

Unity 3D で開発しており、ここに実装されたクラスで Combobox を作成しようとしました

そして今、私のテストクラスでは、これを行います:

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: 配列インデックスが範囲外です。ombobox_test.OnGUI () (Assets/combobox_test.cs:56)

さまざまな Web サイトで見つけた解決策をいくつか試しましたが、何も機能しません。

4

1 に答える 1

1

その長さ以上の配列内のインデックスにアクセスしようとすると、IndexOutOfRangeException がスローされます。あなたの問題はそれだと思います

 int selectedItemIndex = comboBoxControl.GetSelectedItemIndex();

comboBoxList(eg )の容量を超える値を与える>= 5ため、アクセスしようとするcomboBoxList[selectedItemIndex]と IndexOutOfRangeException がスローされます。

于 2012-05-15T13:13:21.410 に答える