У меня проблема, когда я меняю изображение SpriteRenderer, когда вызывается метод onClick.Неправильный спрайт разрушен в Unity (DontDestroyOnLoad)
Однако у меня возникла проблема дубликатов в Сцене после ее перезагрузки (то есть выходите из сцены, а затем снова).
Я попытался решить это, уничтожив правильный дубликат при повторном входе в сцену. Однако старый (измененный) спрайт (тот, который я хотел бы сохранить) продолжает разрушаться, пока новый еще не существует.
Это часть моего кода для сохранения и уничтожения спрайт
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 (с) может быть передано в то же время разрушает неправильный спрайт! ,
Любая помощь была бы принята с благодарностью.
Можете ли вы дать больше информации, как: что делает печать (г); Возврат строки. У вас есть весь объект, который вы ожидаете в этом списке? Когда вы называете эти две функции? –
Что такое 'Clue'? Никто не знает, что это. Недостаточно вашего кода для получения справки. – Programmer
является 'обозначеннымObjects' объявленным как статическим? Когда называется destroySprite? Для вашего второго вопроса: безопасно удалить при повторении попытку доступа к элементам в цикле for, который переходит от последнего элемента к первому. Таким образом, у вас не будет проблем с итератором и вы можете безопасно удалить элементы, не беспокоясь о неправильных индексах. – CShark