Мне нужно сохранить данные в Player Prefs Есть Button который перекидывает на сцену1, но когда он перекидывает на сцену2 то он не сохраняет данные У меня в скрипте который на сцене1 написан скрип для сохранения, но он сохраняет при выхода из игры, а когда перехожу на любую сцену сохранения слетают Я пытался так
xp,level,Money, у меня показаны на сцене1, нажимаю на Button который должен перекинуть меня на сцену2 у меня там тоже написаны данные xp,level,Money, но они совершенно другие, не как на первой сцене Подскажите как сделать правильно?
p.s - игра на андроид, хз полезная инфа или нет
Сообщение отредактировал Flypi - Четверг, 06 Июля 2017, 23:36
Вопрос задан в заголовке темы совсем не тот, что Вам нужен. При чем тут сохранение чего угодно, если Вам нужно перейти нормально к другой сцене? OnApplicationQuit - это именно выход из игры! Зачем Вы при выходе из игры загружаете сцену? Напишите свою функцию, в которой сохраните что надо и загрузите новую сцену. Присвойте Button эту свой функцию в инспекторе в onClick
Flypi, в вашем случае не нужно ничего сохранять в файл. Для сохранения данных дял перехода между сценами используются static поля, они сохраняют значение, так как не привязаны к экземпляру своего не-статического класса. То есть, можно создать класс для сохранения данных при переходе:
Код
public static class PlayerDataIntermediateSaver { public static int Health { get; private set; } public static int Level { get; private set; } public static int XP { get; private set; }
public static void SetPlayerData(int health, int level, int xP) { Health = health; Level = level; XP = xP; } }
public static class PlayerDataIntermediateSaver { public static int Money { get; private set; } public static int level { get; private set; } public static int xp { get; private set; }
public static void SetPlayerData(int money, int Level, int xP) { Money = money; level = Level; xp = xP; } }
Сообщение отредактировал Flypi - Суббота, 08 Июля 2017, 23:07
Flypi, конечно, потому что я написал это всё как пример. Для того, чтобы это реально работало, нужно сохранять именно те поля игрока, которые нужны. Моя команда
public static class PlayerDataIntermediateSaver { public static int Money { get; private set; } public static int level { get; private set; } public static int xp { get; private set; }
public static void SetPlayerData(int money, int Level, int xP) { Money = money; level = Level; xp = xP; } }
public static class PlayerDataIntermediateSaver { public static int Money { get; private set; } public static int level { get; private set; } public static int xp { get; private set; }
public static void SetPlayerData(int money, int Level, int xP) { Money = money; level = Level; xp = xP; } }
public Text xpText, MoneyText, levelText; private int xp; private int level = 1; private int MoneySeconds; private int xpSeconds; private int NumberClicks = 1; public int Money; [Space] private int bonus = 1; public GameObject shopPan; [Header("Магазин")] public int[] shopCosts; public int[] shopBonuses; public Text[] shopBttnsText; private int MoneyClickBuy; public Text MoneyClickText; private int MoneySecBuy; public Text MoneySecText; private int XpSecBuy; public Text XpSecText;