【发布时间】:2016-05-18 10:07:56
【问题描述】:
我在更改SpriteRenderer 的图像时遇到问题,因为调用了 onClick 方法。
但是,我在重新加载场景后遇到了重复场景的问题(即退出场景然后再次返回)。
我尝试通过在重新进入场景时破坏正确的副本来解决此问题。但是,旧的(更改的)精灵(我想保留的)在新的精灵仍然存在时不断被破坏。
这是我保存和销毁精灵的代码的一部分:
private void saveSprite(Clue c){
markedObjects.Add(c);
Debug.Log ("Save");
DontDestroyOnLoad (c.getSprite());
create = true;
}
private void destroySprite(Clue c){
foreach(Clue g in markedObjects){
print (g);
if (!markedObjects.Contains(c)){
Debug.Log("Destroy");
Destroy (c.getSprite());
}
}
}
我真的不明白destroySprite 条件!markedObjects.Contains(c) 是如何在仍然破坏不正确的精灵的同时传递的。
任何帮助将不胜感激。
【问题讨论】:
-
您能否提供更多信息,例如: print(g); 是什么?线返回。您在此列表中拥有您期望的所有对象吗?什么时候调用这两个函数?
-
什么是
Clue?没有人知道这是什么。您的代码不足以获得帮助。 -
markedObjects是否声明为静态?什么时候调用destroySprite?对于您的第二个问题:要在迭代时安全删除,请尝试访问 for 循环中的元素,该循环从最后一个元素到第一个元素。因此,您不会遇到迭代器问题,并且可以安全地删除项目而不必担心索引错误。
标签: c# object unity3d singleton monodevelop