Grundsätzlich versuche ich ein Wörterbuch mit einem TextAsset zu füllen, aber dabei bekomme ich immer eine "IndexOutOfRangeException: Array-Index ist außerhalb des Bereichs." von einem der Arrays und ich bin mir nicht sicher, warum ... Ich benutze Visual Studio Community in Unity 5, auch habe ich erst vor 4 Monaten mit dem Programmieren begonnen und ehrlich gesagt keine Ahnung, was das Problem sein könnte. ..Array-Index außerhalb des Bereichs beim Füllen eines Wörterbuchs mit text.Split
public Dictionary<string, string> Items = new Dictionary<string, string>();
Start(){
var itemList = Resources.Load("ItemList", typeof(TextAsset)) as TextAsset;
//populating the Dictionaries using previous text assets. Line by Line.
//Populating Dictionary with Text Asset with format Item:Id. The ':' symbol separates lines into columns
string[] rows = itemList.text.Split('\n');
foreach (string row in rows)
{
string[] data = row.Split(':');
Items.Add(data[0].Trim(), data[1].Trim()); //exception is thrown in this line
}
}
ItemList.txt hat diese Testlinien:
Health Potion:1
Mana potion:2
Beet:3
Poisonous Beet:4
Cheese Slice:5
eine andere Sache ist, hält Visual Studio itemList (TextAsset) mit einer Wellenlinie in der text.Split Linie und zeigt den Tooltip unterstrichen : Mögliche System.NullReferenceException. Aber die Einheit zeigt überhaupt keine Fehler in Bezug auf Null-Referenzen.
Wie auch immer, jeder Rat würde sehr geschätzt werden.
Setzen Sie einen Haltepunkt auf die Zeile, die die Ausnahme im Debugger auslöst, und führen Sie Ihre App aus. Ich wette, Daten haben weniger als 2 Elemente. Denn mindestens eine Zeile enthält kein ':'. Sehen Sie sich den Inhalt von 'itemList' in Ihrem Debugger an. –
Hey danke! Ich kann nicht glauben, dass es so einfach war, weil es am Ende eine leere Linie gab! Aber, gibt es einen Weg, um dieses Problem zu umgehen? Um den Code leere Zeilen zu ignorieren? Ich denke, ich muss in den Foren nachsehen, oder ich werde wegen "Huckepack" -Fragen gequält. Trotzdem danke. –