Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by rtanwar616 · May 08, 2018 at 06:51 AM · c#unity 5json

Save data to a location without override

so i have this script which enables me to save data in the following manner in a json file [name , score,time] the only issue is that after the data is saved and i run the program again it overrides the previous contents , what i want is that a new file should be created every time or the new contents should be saved one after the another in the same file . But override should be avoided . any ideas ?. the script is attached down below .

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using System.IO;
 public class savegameformaterial1 : MonoBehaviour {
 
     static readonly string SAVE_FILE = "new.json";
     void Start () {
         GameObject timerobject = GameObject.Find("sphere");
         helpmetimer htimer = timerobject.GetComponent<helpmetimer>();
         helperclass data = new helperclass() { name = "ravi", score = 0, time = htimer.timerText.text };
 
         string json = JsonUtility.ToJson(data);
         Debug.Log(json);
         string filename = Path.Combine(Application.persistentDataPath, SAVE_FILE);
         if (File.Exists(filename))
         {
             File.Delete(filename);
         }
         File.WriteAllText(filename, json);
         Debug.Log("Player saved to" + filename);
     }
     void Update()
     {
         GameObject timerobject = GameObject.Find("sphere");
         helpmetimer htimer = timerobject.GetComponent<helpmetimer>();
         helperclass data = new helperclass() { name = "billiejoe", score = score4.scoreValue,time= htimer.timerText.text };
         string json = JsonUtility.ToJson(data);
         Debug.Log(json);
         string filename = Path.Combine(Application.persistentDataPath, SAVE_FILE);
         if (File.Exists(filename))
         {
             File.Delete(filename);
         }
         File.WriteAllText(filename, json);
         Debug.Log("Player saved to" + filename);
     }
 }

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by tormentoarmagedoom · May 08, 2018 at 07:45 AM

Good day.

I see yo uare doing this at the start, and every frame in the update, this means you are saving this info every 0.05 seconds aprox! Why¿? is too much!.

First, do something to save every 5 seconds for example, should be enought!

      Debug.Log(json);
      string filename = Path.Combine(Application.persistentDataPath, SAVE_FILE);
      if (File.Exists(filename))
      {
          File.Delete(filename);
      }
      File.WriteAllText(filename, json);
      Debug.Log("Player saved to" + filename);

Is deleting your file, and createing a new one with the new information.

When you really need to save? every second? How many saved files you want? You can save the files with the date/hou in the name, using DateTime.Now.

So new file will be created every time. But i say again, if want "autosave" execute the save functions every 5 or 10 seconds, not multiple times every second!

Bye!

Comment
Add comment · Show 16 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Harinezumi · May 08, 2018 at 08:09 AM 0
Share

Yes, that is a good approach.

An alternative to adding the date (so that you don't run out of disk space) is to keep a limited number of save files, for example 5 or 10, and keep looping index. Something like this:

 [SerializeField] private int maxSaveFileCount = 10;
 private int currentFileIndex = 0;
 
 ...
 // inside the saving function
 currentFileIndex = (currentFileIndex + 1) % maxSaveFileCount;
 string filename = Path.Combine(Application.persistentDataPath, SAVE_FILE + currentFileIndex);
 // the rest is the same

avatar image rtanwar616 Harinezumi · May 08, 2018 at 09:16 AM 0
Share

this is also doing overrides in the same file , what i want is that all the previous values and the new updations to be saved in one file OR separate files . like a database but no overrides.

avatar image Harinezumi rtanwar616 · May 08, 2018 at 09:46 AM 0
Share

Of course it is overwriting previous files, that is to prevent filling your disk with save files (it is similar to log rotation technique). In case disk space is not important, then just use tormentoarmagedoom's solution of adding the date to the save file name.
Or you can use File.AppendText() ins$$anonymous$$d of File.WriteAllText().

avatar image rtanwar616 · May 08, 2018 at 09:21 AM 0
Share

this approach is good but frankly there is no need to go this deep . just wanna keep track of the values whenever i start and stop the application. either new file can be created every-time or the new as well as all the subsequent values can be kept in one file space is not the issue since the number of files is gonna be meagre. and time wise also there is no bound , i don't have to save file every second or so i just have to save the file(either updations or in a new file )every-time i start and pause the application.

avatar image Harinezumi rtanwar616 · May 08, 2018 at 09:50 AM 0
Share

The saving code is in an Update() function, which runs every frame. If your application runs at 60 FPS, with the above code you will create 60 files every second. So the number of files will not be meagre (although their size will be small - but they will still take a full block of disk space).

To save at application start and end only, move the saving code into a Save() function, and call it in Start() and in OnApplicationQuit().

avatar image rtanwar616 Harinezumi · May 08, 2018 at 10:06 AM 0
Share

ok .i've added the onapplicationquit() function and save function inside it . how to add the dates OR how to make separate files each time at the end of the application?

Show more comments

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

522 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Help me with this json code please 1 Answer

How to get a JSON string of a folder structure with c# in Unity3d 2 Answers

JsonUtility doesn't serialize nested mixed var 1 Answer

How to protect JSON file game data? 3 Answers

How to read an int array using LitJson? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges