Понедельник, 06 Мая 2024, 03:15

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сохранение Json в Player Prefs.
Сохранение Json в Player Prefs.
FlypiДата: Четверг, 06 Июля 2017, 23:27 | Сообщение # 1
был не раз
Сейчас нет на сайте
Мне нужно сохранить данные в Player Prefs
Есть Button который перекидывает на сцену1, но когда он перекидывает на сцену2 то он не сохраняет данные
У меня в скрипте который на сцене1 написан скрип для сохранения, но он сохраняет при выхода из игры, а когда перехожу на любую сцену сохранения слетают
Я пытался так
Код

public void OnApplicationQuit()
    {
        sev.xp = xp;
        sev.level = level;
        sev.Money = Money;
        PlayerPrefs.SetString("SV", JsonUtility.ToJson(sev));

        SceneManager.LoadScene(1);
    }

xp,level,Money, у меня показаны на сцене1, нажимаю на Button который должен перекинуть меня на сцену2 у меня там тоже написаны данные xp,level,Money, но они совершенно другие, не как на первой сцене
Подскажите как сделать правильно?

p.s - игра на андроид, хз полезная инфа или нет


Сообщение отредактировал Flypi - Четверг, 06 Июля 2017, 23:36
AndrewNovakДата: Пятница, 07 Июля 2017, 10:19 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Сохрани все
PlayerPrefs.SetString("SV", JsonUtility.ToJson(sev));
PlayerPrefs.Save();


COLD DEPTH Steam
PUSS!
COLD DEPTH
FlypiДата: Пятница, 07 Июля 2017, 20:51 | Сообщение # 3
был не раз
Сейчас нет на сайте
AndrewNovak,
Или я тебя не понял или не получается
Я сделал так
Код

public void OnApplicationQuit()
    {
        sev.xp = xp;
        sev.level = level;
        sev.Money = Money;
        PlayerPrefs.SetString("SV", JsonUtility.ToJson(sev));
        PlayerPrefs.Save();

        SceneManager.LoadScene(1);
    }
seamanДата: Пятница, 07 Июля 2017, 23:33 | Сообщение # 4
старожил
Сейчас нет на сайте
Вопрос задан в заголовке темы совсем не тот, что Вам нужен. При чем тут сохранение чего угодно, если Вам нужно перейти нормально к другой сцене?
OnApplicationQuit - это именно выход из игры! Зачем Вы при выходе из игры загружаете сцену?
Напишите свою функцию, в которой сохраните что надо и загрузите новую сцену. Присвойте Button эту свой функцию в инспекторе в onClick
shizofrenДата: Суббота, 08 Июля 2017, 09:33 | Сообщение # 5
Starting MS-DOS...
Сейчас нет на сайте
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;
    }
}



Вот так выглядит переход:

Код


    PlayerDataIntermediateSaver.SetPlayerData(health, level, xP);
    SceneManager.LoadScene(1);



А после загрузки сцены поля PlayerDataIntermediateSaver.Health и т. д. будут иметь значения, записанные до загрузки.


Моя команда
FlypiДата: Суббота, 08 Июля 2017, 23:06 | Сообщение # 6
был не раз
Сейчас нет на сайте
shizofren,
У меня подчеркивает красным эти места
Они выделены жирным

PlayerDataIntermediateSaver.SetPlayerData(money, Level, xP);
    SceneManager.LoadScene(1);

Вот все что я сделал
Код

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
shizofrenДата: Суббота, 08 Июля 2017, 23:12 | Сообщение # 7
Starting MS-DOS...
Сейчас нет на сайте
Flypi, конечно, потому что я написал это всё как пример. Для того, чтобы это реально работало, нужно сохранять именно те поля игрока, которые нужны.

Моя команда
FlypiДата: Воскресенье, 09 Июля 2017, 01:56 | Сообщение # 8
был не раз
Сейчас нет на сайте
shizofren, А как их сохранить?
Перепробовал много вариантов
Для меня это уже больная тема.
Можешь написать весь код?
shizofrenДата: Воскресенье, 09 Июля 2017, 10:01 | Сообщение # 9
Starting MS-DOS...
Сейчас нет на сайте
Flypi, хорошо, давай разбираться. Какие поля игрока тебе нужно сохранить?

Моя команда
FlypiДата: Воскресенье, 09 Июля 2017, 14:12 | Сообщение # 10
был не раз
Сейчас нет на сайте
shizofren, Money,level,xp
Получается эти
shizofrenДата: Воскресенье, 09 Июля 2017, 19:03 | Сообщение # 11
Starting MS-DOS...
Сейчас нет на сайте
Flypi, а игрок имеет поля, которые называются "money, Level, xP"? И какой тип данных у каждого из этих полей?

Моя команда

Сообщение отредактировал shizofren - Воскресенье, 09 Июля 2017, 19:23
FlypiДата: Воскресенье, 09 Июля 2017, 21:18 | Сообщение # 12
был не раз
Сейчас нет на сайте
shizofren, int у всех

Сообщение отредактировал Flypi - Воскресенье, 09 Июля 2017, 21:20
shizofrenДата: Среда, 12 Июля 2017, 21:28 | Сообщение # 13
Starting MS-DOS...
Сейчас нет на сайте
Flypi, наведи на красное подчёркивание, должно всплыть сообщение об ошибке, сделай скриншот и выложи сюда.

Моя команда
FlypiДата: Четверг, 13 Июля 2017, 16:27 | Сообщение # 14
был не раз
Сейчас нет на сайте
shizofren,
shizofrenДата: Четверг, 13 Июля 2017, 22:58 | Сообщение # 15
Starting MS-DOS...
Сейчас нет на сайте
Flypi, кинь весь скрипт.

Моя команда
FlypiДата: Пятница, 14 Июля 2017, 03:34 | Сообщение # 16
был не раз
Сейчас нет на сайте
shizofren,
Код

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;
    }
}

переход
Код

PlayerDataIntermediateSaver.SetPlayerData(money, Level, xP);
    SceneManager.LoadScene(1);
shizofrenДата: Суббота, 15 Июля 2017, 16:23 | Сообщение # 17
Starting MS-DOS...
Сейчас нет на сайте
Flypi, нужен весь скрипт.

Моя команда
FlypiДата: Суббота, 15 Июля 2017, 20:58 | Сообщение # 18
был не раз
Сейчас нет на сайте
shizofren, для чего весь то?
вот весь скрипт
Код


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;
    }
}

переход

PlayerDataIntermediateSaver.SetPlayerData(money, Level, xP);
    SceneManager.LoadScene(1);
HerrPotapovДата: Суббота, 15 Июля 2017, 21:05 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
Flypi, потому что у тебя ошибки в той части которую ты так старательно пытаешься скрыть.
Где объявляются money, Level и xP?


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!
FlypiДата: Суббота, 15 Июля 2017, 21:13 | Сообщение # 20
был не раз
Сейчас нет на сайте
Ну возможно ошибки из-за сохранения
Весь код


Сообщение отредактировал Flypi - Суббота, 15 Июля 2017, 21:13
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Сохранение Json в Player Prefs.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг