在Unity中销毁错误的精灵(DontDestroyOnLoad)

时间:2016-05-18 10:07:56

标签: c# object unity3d singleton monodevelop

我遇到一个问题,我在调用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()); } } } 的图像。

然而,重新加载后,我在场景中出现重复问题(即离开场景然后再回来)。

我尝试通过在重新进入场景时销毁正确的副本来解决此问题。然而,旧的(改变的)精灵(我想保留的精灵)不断被破坏,而新的精灵仍在那里。

这是我保存和销毁精灵的代码的一部分:

!markedObjects.Contains(c)

我真的不明白destroySprite条件database.driverClassName=oracle.jdbc.OracleDriver database.url=jdbc:oracle:thin:@192.33.333.33:1530:sid database.username=user database.password=pass #DB2 database2.driverClassName=oracle.jdbc.OracleDriver database2.url=jdbc:oracle:thin:@192.33.333.33:1530:sid database2.username=user2 database2.password=pass 如何在仍然销毁不正确的精灵的情况下传递。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

private void destroySprite(Clue c){< - 我假设Clue c是你要销毁的精灵

foreach(Clue g in markedObjects){ <-- get each Clue in markedObjects
    print (g);
    if (!markedObjects.Contains(c)){ <-- if c is not within all of markedObjects then destroy c? Perhaps you meant to destroy g.
        Debug.Log("Destroy");
        Destroy (c.getSprite()); 
    }
}

}