在unity3d中添加字典时的空引用

时间:2013-11-22 11:21:57

标签: dictionary unity3d unityscript

我在字典中添加了一个文本文件但是它给出了错误NullReferenceException:对象引用未设置为对象的实例

original File

aa
aah
aahed
aahing
aahs
aal
aalii
aaliis
aals

代码:

import System.Collections.Generic;
import System.Linq;

var MytextAsset:TextAsset;
var myDictionary :Dictionary.<String,String>;
function Start () {

    /* split the text file up by newline characters */

    var textLines : String [] = MytextAsset.text.Split("/rn"[0]);  
    myDictionary.Add(textLines[0], textLines[0]);

}

错误在最后一行..

2 个答案:

答案 0 :(得分:2)

虽然我不确定您是否真的在这里使用C#,但您很可能需要使用myDictionary的新实例初始化Dictionary.<String,String>。尝试像

这样的东西
var myDictionary :Dictionary.<String,String> = new Dictionary.<String, String>();

答案 1 :(得分:0)

你需要在使用它之前实例化你的字典,在你使用Add()之前在你的开始做这个,你应该一帆风顺。这是一个工作示例,我刚刚使用您的文件示例运行。我刚刚编辑过来还要添加循环,你需要将所有行添加到myDictionary对象中:

import System.Collections.Generic;
import System.Linq;

var MytextAsset:TextAsset;
var myDictionary :Dictionary.<String,String>;
function Start () {

     /* split the text file up by newline characters */

    var textLines : String [] = MytextAsset.text.Split("\n"[0]);  
    myDictionary = new Dictionary.< String, String >() ;
    for(index = 0 ; index < textLines.length ; ++index){
        myDictionary.Add(textLines[index],textLines[index]);
    }

    for(index = 0 ; index < myDictionary.Count; ++index){
        Debug.Log(myDictionary.Item[textLines[index]]);
    }
}

Example2