基本的にTextAssetを使用してDictionaryを埋めようとしていますが、処理中に「IndexOutOfRangeException:Arrayインデックスが範囲外です。なぜ私はUnity 5のVisual studio Communityを使用しています。また、私は4ヶ月前にプログラミングを学び始めたばかりで、正に何が問題なのかを知りません。 ..array.Subitを使用して辞書を塗りつぶすときに配列インデックスが範囲外になる
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は、これらのテストラインを持っています
Health Potion:1
Mana potion:2
Beet:3
Poisonous Beet:4
Cheese Slice:5
もう一つは、Visual Studioがtext.Splitラインに波線でitemListの(TextAsset)を下線とツールチップを表示し続ける、あります可能なSystem.NullReferenceException。しかし、単一性はnull参照に関するエラーをまったく表示しません。
とにかく、助言をいただければ幸いです。
デバッガで例外をスローする行にブレークポイントを置き、アプリケーションを実行します。私は 'data'が2要素未満であると確信しています。これは、少なくとも1つの '行'に ':'が含まれていないためです。あなたのデバッガで 'itemList'の内容を見てください。 –
ありがとう!私はそれが単純だったとは信じられない、それは最後に空の行があったからだ!しかし、とにかく、その問題を回避する方法はありますか?コードが空行を無視するようにするには?推測すると、私はフォーラムで一見しなければならないでしょう、または私は "ピギーバック"の質問を叱られるつもりです。とりあえずありがとう。 –