好的,让我解释一下自己:
我正在尝试使用带有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。
为什么这不起作用?
答案 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);
}
}
}
}