【发布时间】:2016-01-26 00:05:38
【问题描述】:
在这里,我在迭代之前复制了字典,它仍然给我这个错误。如果有人可以帮助我,那就太棒了。
IEnumerator HandleStaticObjects()
{
handleStaticObjectsIsRunning = true;
List<string> instantiatedObjects = new List<string>();
Dictionary<string, staticObjectWaitingToBeInstantiated> currentStaticObjectsWaitingToBeInstantiated = staticObjectsWaitingToBeInstantiated;
foreach (KeyValuePair<string, staticObjectWaitingToBeInstantiated> staticObject in currentStaticObjectsWaitingToBeInstantiated)
{
if (staticObject.Value.staticObject == null)
{
AssetBundleCreateRequest bundle = AssetBundle.LoadFromFileAsync(@"C:/gameAssets/" + staticObject.Value.name.Split('?')[0] + ".unity3d");
UnityEngine.Debug.Log("loading " + staticObject.Value.name.Split('?')[0]);
yield return bundle;
AssetBundle assetBundle = bundle.assetBundle;
var assetLoadRequest = assetBundle.LoadAssetAsync<GameObject>(staticObject.Value.name.Split('?')[0]);
yield return assetLoadRequest;
staticObject.Value.staticObject = assetLoadRequest.asset as GameObject;
assetBundle.Unload(false);
}
staticObjects[staticObject.Key] = Instantiate(staticObject.Value.staticObject);
staticObjects[staticObject.Key].transform.eulerAngles = staticObject.Value.eulerAngles;
staticObjects[staticObject.Key].transform.position = staticObject.Value.position;
staticObjects[staticObject.Key].transform.localScale = staticObject.Value.localScale;
if (staticObjects[staticObject.Key].GetComponent<DataHolder>() == null)
{
staticObjects[staticObject.Key].AddComponent<DataHolder>();
}
staticObjects[staticObject.Key].GetComponent<DataHolder>().objectName = staticObject.Value.name;
instantiatedObjects.Add(staticObject.Key);
}
foreach (string instantiatedObject in instantiatedObjects)
{
staticObjectsWaitingToBeInstantiated.Remove(instantiatedObject);
}
handleStaticObjectsIsRunning = false;
}
堆栈跟踪:
InvalidOperationException: out of sync
System.Collections.Generic.Dictionary`2+Enumerator[System.String,CoOrdsHandler+staticObjectWaitingToBeInstantiated].VerifyState () (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:912)
System.Collections.Generic.Dictionary`2+Enumerator[System.String,CoOrdsHandler+staticObjectWaitingToBeInstantiated].MoveNext () (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:835)
CoOrdsHandler+<HandleStaticObjects>c__Iterator0.MoveNext () (at Assets/Scripts/CoOrdsHandler.cs:342)
【问题讨论】:
-
你的问题陈述应该在问题的开头。让您的问题简短而巧妙,并始终正确格式化,以便其他人可以正确阅读。
标签: c# dictionary unity3d mono