Продолжаю разбираться в этой теме
Такая проблема:
Нажимаю Play
и понимаю, что мой Json файл растет каждый раз, когда сериализую данные (каждый раз когда занимаюсь тестом сцены). Я так понимаю, данные хранятся в памяти, а нажатие на Play при тесте сцены Unity != выкл сцену. Т.к. при перезапуске Unity все нормально
public class SaveSystem : MonoBehaviour
{
    private SaveWarriors saveWarriors = new SaveWarriors();
    private void Start()
    {
        File.WriteAllText(Path.Combine(Application.dataPath, "Warriors.json"), JsonUtility.ToJson(saveWarriors));
    }
}

[System.Serializable]
public class SaveWarriors
{
    public List<Warrior> warriors = GameParameters.allWarriorsList;
}

Принятый ответ

У тебя режим записи файла append может?
Не, я когда Юнити выкл., файл Warriors.json остается в папке с проектом, а когда запускаю сцену в первый раз после перезапуска юнити он перезаписывается и весит мало (90 кб).
Если конечно я все правильно понял
Append: если файл существует, то текст добавляется в конец файл. Если файла нет, то он создается. Файл открывается только для записи.

Короче, я понял, что каждый раз при нажатии на Play создаются новые экземпляры класса Warrior (т.к. их id не повторяется) и добавляются в статичный список GameParameters.allWarriorsList. Видимо [Serializable] держит их всех в памяти до момента пока программа не закроется корректно. Это можно решить добавлением if ... else, но хотелось бы все таки знать как это работает. Или мб так и должно быть.)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
37
2 года назад
0
У тебя режим записи файла append может?
0
13
2 года назад
Отредактирован Diabfall
0
У тебя режим записи файла append может?
Не, я когда Юнити выкл., файл Warriors.json остается в папке с проектом, а когда запускаю сцену в первый раз после перезапуска юнити он перезаписывается и весит мало (90 кб).
Если конечно я все правильно понял
Append: если файл существует, то текст добавляется в конец файл. Если файла нет, то он создается. Файл открывается только для записи.

Короче, я понял, что каждый раз при нажатии на Play создаются новые экземпляры класса Warrior (т.к. их id не повторяется) и добавляются в статичный список GameParameters.allWarriorsList. Видимо [Serializable] держит их всех в памяти до момента пока программа не закроется корректно. Это можно решить добавлением if ... else, но хотелось бы все таки знать как это работает. Или мб так и должно быть.)
Загруженные файлы
Принятый ответ
0
37
2 года назад
0
Тебе надо почитать про жизненный цикл и эвенты в юнити, по ним чистить. Видимо, приложение живёт всё это время.
Ну либо они читаются из файла автоматом
0
22
2 года назад
0
А в чем вопрос то?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.