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

问题描述 投票:0回答:1

我有一个问题,当调用 onClick 方法时,我正在更改

SpriteRenderer
的图像。

但是,重新加载场景后,我遇到了场景重复的问题(即离开场景然后再次返回)。

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

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

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)

任何帮助将不胜感激。

c# unity-game-engine singleton
1个回答
0
投票
private void destroySprite(Clue c){ // <-- I assume Clue c is the sprite you want to destroy

    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()); 
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.