Пытаюсь сделать так, чтобы в конце уровня все достижения, значения которых были изменены, выводились на экран. Так я сохраняю информацию о достижениях, которые были получены:
// вот эти ачивки будут создаваться в меню выигрыша. Функция вызывается при получении ачивки (ПЕРЕД изменением значения)
public void LoadAchievementStartInfo(string title, int startAchievementValue, int startCounterAchievement, int ranking)
{
if (!achievementsChange.Contains (title))
{
achievementsChange.Add (title); // тут List<string>
PlayerPrefs.SetInt ("StartAchievementValue" + title, startAchievementValue);
PlayerPrefs.SetInt ("StartCounterAchievement" + title, startCounterAchievement);
PlayerPrefs.SetInt ("Ranking" + title, ranking);
}
}
Суть в том, что я для каждой ачивки сохраняю ее имя (title
), "начальное значение до ее получения", еще одно "начальное значение" (для вопроса оно не важно, просто не стал строку удалять), а так же сохраняю ее позицию (ranking
) - ее я хочу использовать для сортировки. Эта функция вызывается в PlayScene
(соответственно, achievementsChange
тоже находится там), а экран выигрыша - уже другая сцена.
И вот тут я начинаю дико тупить - как мне вывести на экран все ачивки, которые я таким образом сохранил?
Вообще для создания ачивки у меня есть функция CreateAchievement (title, ну и всякие параметры)
, и вот как-то нужно создать все ачивки, которые были изменены, используя эту функцию (вернее, поместить информацию о достижениях в эту функцию).
Как-то так (просто чтобы пояснить идею):
for (int i = 0; i < achievementsChange.count (как её получить?); i ++)
CreateAchievement(achievementChange[i], PlayerPref.GetInt("StartCounterAchievement" + achievementChange[i]), таким же образом остальные параметры);
Но ещё раз - я дико туплю, так как, возможно, только что написал решение 0_о
Вопрос несколько изменился: как мне перенести achievementChange
(напомню, это List<string>
) с имеющимися значениями из одной сцены в другую? Технически мне все ещё нужно получить ответ на тему вопроса, так что вроде нарушения правил нет.
Обновление: Возможно, я не совсем корректно сформулировал вопрос. Достижения уже реализованы и они прекрасно работают. Мне для сцены выигрыша нужно отловить те достижения, которые были изменены (все достижения, которые были получены в процессе игры, а так же все достижения, значения которых были изменены - например, для одной ачивки прогресс 0/3, а в процессе игры я делаю 2/3; вот такие тоже нужно отлавливать), а затем вывести их на экран
Абсолютное большинство игр грешат использованием статичных классов и/или синглтонов
В Unity есть свои подводные камни. Поэтому реализация одиночки, зачастую, включает в себя вызов метода DontDestroyOnLoad
. Подробнее можешь прочитать здесь
В любом случае, передавать List<string>
- это плохая идея. Затем тебе понадобится отобразить прогресс достижения. И появится ещё один List<int>
. Создай класс, описывающий достижение, помести его в глобальную коллекцию ачивок (Dictionary<id,AchievementData>
), доступную из любой сцены. В качестве id
можешь и дальше использовать string, или перейти на числа/GUID. Строки опасны тем, что имеют обыкновение по самым разным причинам меняться (рефакторинг, локализация), после чего перестают совпадать. Зачем эта головная боль?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Читая про ReversMap() у AutoMapper, не могу понять разницу между методами ForMember и ForPathТот функционал, который выполняет ForPath на данной странице я обычно...
Доброго времени сутокМне требуется не большая помощь со стороны разработчиков C# или JS
Посоветуйте сайты в интернете, где можно выполнять небольшие проекты по программированию, возможно бесплатно, которыми не стыдно потом будет...
Упрощу реальную задачу для примера - есть вьюшка окна, в окне есть несколько кнопок и условная панельПо нажатию на каждую кнопку в панели...