奇怪的NullReferenceException,我似乎无法理解

时间:2014-08-31 14:26:10

标签: sqlite exception reference null unity3d

好的,让我解释一下自己:

我正在尝试使用带有Unity的SQLite编写保存/加载保存系统,并且在将加载的数据添加到其各自的列表时遇到问题。

问题是,如果我在该方法之外调用此代码,它就可以工作。但我需要在加载数据时运行它。

void AddPaso(string danceName)
{
    for (int i = 0; i < loadedDances.Count; i++)
    {
        if (loadedDances[i].danzaName == danceName)
        {
            try
            {
                Debug.Log(loadedDances.Count);
                loadedDances[i].pasos.Add(paso);
            }
            catch (Exception ex)
            {
                Debug.Log(ex.Message);
            }
        }
    }
}

如果我没有通过所有List并使用loadedDances [0]而不是[i]添加数据,则它可以正常工作。但我似乎不明白为什么,因为如果我在控制台上打印loadedDances.Count,它实际上说它大于0。

为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

显然 loadedDances [i] .paso 为空。

您应将其更改为:

void AddPaso(string danceName)
{
    for (int i = 0; i < loadedDances.Count; i++)
    {
        if (loadedDances[i].danzaName == danceName)
        {
            try
            {
               Debug.Log(loadedDances.Count);
               if(loadedDances[i].pasos!=null)
               {
                   loadedDances[i].pasos.Add(paso);
               }
               else
               {
                   Debug.Log ( "loadedDances["+i+"].pasos is not set correctly");
                }

            }
            catch (Exception ex)
            {
                Debug.Log(ex.Message);
            }
        }
    }

}