Search Unity

Save Game Free - Complete Free Save Game Solution

Discussion in 'Assets and Asset Store' started by hasanbayat, Feb 22, 2017.

  1. vorora

    vorora

    Joined:
    Mar 17, 2015
    Posts:
    34
    Hello. SaveGame API doesn't seem to work, for me, on WebGL build and Editor after I switch platform to WebGL. In my project I have save, load, and reset buttons. When I press those buttons, debug.log shows that those functions are called normally, no other errors are shown on console. It just doesn't save and load the data (mostly ints, bools, and a DateTime)

    However, when I switch it back to Stand Alone platform, it works perfectly on Editor and Stand Alone build. I also made sure that I didn't have #if UNITY_EDITOR or something like this anywhere in my own scripts. So I'm really not sure what's going on and different between those 2 platforms.
     
  2. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Try to do a simple saving and loading and use Debug.Log to make sure the value is loaded:

    Code (CSharp):
    1. SaveGame.Save("simple", "Simple Data");
    2. string simpleData = SaveGame.Load<string> ("simple");
    3. Debug.Log(simpleData);
    Thanks.
     
  3. vorora

    vorora

    Joined:
    Mar 17, 2015
    Posts:
    34
    On Editor (Stand Alone), it works fine. Debug.Log says "Simple Data".

    But on Editor (WebGL), it says:
    -The specified identifier (simple) does not exists. please use Exists () to check for existent before calling Load.
    -Null

    Really appreciate your help and quick response. I have to go outside for now but I'll keep you posted. Thank you.
     
    kakasi likes this.
  4. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Try to add link.xml file to your project, it might fix the problem:

    Code (CSharp):
    1. <linker>
    2.     <assembly fullname="FullSerializer">
    3.         <namespace fullname="FullSerializer" preserve="all"/>
    4.         <namespace fullname="FullSerializer.Internal" preserve="all"/>
    5.         <namespace fullname="FullSerializer.Internal.DirectConverters" preserve="all"/>
    6.     </assembly>
    7. </linker>
    Try to switch from Json Serialization to Binary Serialization, it might be the problem.

    EDIT: No problem, i am waiting for you. :)

    Thanks.
     
    Last edited: Oct 29, 2017
  5. vorora

    vorora

    Joined:
    Mar 17, 2015
    Posts:
    34
    I'm quite new to programming, so I have no idea how to add link.xml to which script. It'd be great if you could explain more.

    I also tried to change the serialization to Binary Serialization by the following code. It, again, didn't work on WebGL-Editor but worked on Stand alone.


    Code (CSharp):
    1.     private ISaveGameSerializer m_Serializer;
    2.  
    3.     void Awake () {
    4.         m_Serializer = new SaveGameBinarySerializer ();
    5.         OnLoadButton ();
    6.     }
    7.  
    8.     public void OnSaveButton () {
    9.         energy = PlayerManagerScript.instance.currentEnergy;
    10.         SaveGame.Save<float> ("energy", energy, new SaveGameBinarySerializer ());
    11. //or
    12.         SaveGame.Save<float> ("energy", energy, m_Serializer);
    13.     }
    14.  
    15.     public void OnLoadButton () {
    16.         if (SaveGame.Exists ("energy"))
    17.             energy = SaveGame.Load<float> ("energy", new SaveGameBinarySerializer ());
    18. //or
    19.         if (SaveGame.Exists ("energy"))
    20.             energy = SaveGame.Load<float> ("energy", m_Serializer);
    21.  
    22.        energyText.text = energy.ToString ();
    23.     }
     
  6. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Just go to the Assets folder in your project and create a file named link.xml and put the below content in it:
    Code (CSharp):
    1. <linker>
    2.     <assembly fullname="FullSerializer">
    3.         <namespace fullname="FullSerializer" preserve="all"/>
    4.         <namespace fullname="FullSerializer.Internal" preserve="all"/>
    5.         <namespace fullname="FullSerializer.Internal.DirectConverters" preserve="all"/>
    6.     </assembly>
    7. </linker>
    Thanks.
     
  7. vorora

    vorora

    Joined:
    Mar 17, 2015
    Posts:
    34
    Hello again. I created link.xml from notepad and put it in Assets folder, but it still didn't work.

    I also experimented by creating a new value with a new, unique string identifier (while in Editor-WebGL) and found out that it didn't appear in the folder that it was supposed to be saved into (C:\Users\%USERNAME%\AppData\LocalLow\CompanyName\ProductName) or anywhere in my computer.

    I also tried to use PlayerPref in Editor-WebGL and WebGL build and it worked. I could save and load that experimental value. But I know that PlayerPref is not a safe way to make a save system for game. Any advice?
     
  8. vorora

    vorora

    Joined:
    Mar 17, 2015
    Posts:
    34
    Hello. I'm not sure if I did it right or not, it might break the code in the future, but in SaveGame.cs in all the places that has...
    Code (CSharp):
    1. #if !UNITY_SAMSUNGTV && !UNITY_TVOS && !UNITY_WEBGL
    I changed it into:
    Code (CSharp):
    1. #if !UNITY_SAMSUNGTV && !UNITY_TVOS
    And now all the data in my prototype can be saved on WebGL build and editor.
     
    Taran3D likes this.
  9. claudius_I

    claudius_I

    Joined:
    May 28, 2017
    Posts:
    254
    November :rolleyes:
     
  10. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    The Documentation has been updated, check it out and share your feedback with us.
    Save Game Free Documentation

    Any further ideas and improvements are welcome.
    Thanks.
     
  11. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
  12. dttngan91

    dttngan91

    Joined:
    Nov 21, 2013
    Posts:
    80
    Does it work for mobile platform?
     
  13. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Yes, it will.
    Let me know if you had any issues.
     
  14. Kuhpik

    Kuhpik

    Joined:
    Dec 15, 2016
    Posts:
    4
    Hello, can i use it with Google Play Cloud?
    Sorry, im not a smart person :d
     
  15. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi, I don't have any knowledge and experience with Google Play Cloud, so I haven't included it.
    But, If you have any knowledge that can help us to include this feature, We would be happy to do so.
    Anyway, I am going to research about these services such as Google Play Cloud and iCloud to add extra integrations to Save Game Free.
    Have a look at Google Play Services Plugin for Unity at Writing a saved game section.
    The CommitUpdate accepts a binary array that is the Save Game Free returns, use that to apply saving and loading.

    Thanks.
     
  16. Weendie-Games

    Weendie-Games

    Joined:
    Feb 17, 2015
    Posts:
    75
    Hi, thank you for releasing this for free.

    What is the limitations of this version? What are the differences between the Free and Pro Version?

    Is possible to save the entire scene and Keep gameobject and AI states?
     
  17. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi.

    The free version has some small limitations, like you cannot serialize Vectors and other Unity types or complex types.
    But by Pro version, you can save almost everything.
    I don't recommend saving an entire scene, but you can achieve this by pro not by free.

    Hope this helps.
    Thanks.
     
    Weendie-Games likes this.
  18. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    New Save Game Free version submitted for review, 2.3.7:
    • Compatibility with Unity 2018.1
    • Added GetFiles API method
    • Added GetDirectories API method
    Thanks.
     
  19. Nordir

    Nordir

    Joined:
    Apr 25, 2012
    Posts:
    20
    Hi,

    Your asset rocks. good job!

    The only tiny thing that bothers me is warnings like "The specified identifier (car) does not exists. please use Exists () to check for existent before calling Load". The analytics is littered by this garbage information :)
    I don't want to check all the identifiers initially, getting the default 'zero\empty' value is quite enough. Is there a way to turn the warnings off?

    Thanks!
     
  20. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi.
    Thanks, I glad to hear that.
    Currently, there is no way to do that, but you can directly open SaveGame.cs script and remove those unnecessary Debug.Log calls, Also, I will add this to our development board and then will fix it in the next update.

    Thanks.
    Best Regards.
     
  21. mankeeey

    mankeeey

    Joined:
    Aug 7, 2017
    Posts:
    8
    I can't download it without updating to unity 2018. Do I really need 2018 for it to work?
     
  22. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi, no it works well in older Unity versions, you just need to install newest Unity version to download it and then you are good to go.
    Enjoy!
     
  23. mtoanhcm

    mtoanhcm

    Joined:
    Nov 15, 2013
    Posts:
    1
    Hi, I have a question, when I call Savegame.Save, what will happen if player's device has full storage and we can not save more files?
     
  24. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi.
    An IOException will be thrown when the storage is full and you are trying to save more data.
    Check out this StackOverflow question for more details and information on this exception.
    Thanks.
     
  25. pancyp

    pancyp

    Joined:
    Aug 13, 2018
    Posts:
    1
    Hi, thank you so much for sharing this! I've been looking for ways to save playerprefs to a file on WebGL. My game has two levels and I stored their scores on each level as playerprefs, and my question is which part of your code should I use? I'm a total newbie at programming so please bear with me!! And how do I specify where I want to save the game data - I already have a results folder ready and I want to save each player as individual text files. Thanks in advance! :)
     
  26. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi.
    There is no File API access in WebGL builds, so it is not possible to save data to files in WebGL build.
    In WebGL builds, you can save the data in the Browser storage such as WebSession, Local Storage, and cookies, that the PlayerPrefs does, so that's all.
    Also, Save Game Free uses PlayerPrefs on WebGL builds as there is no File access in these builds.
    Thanks.
     
    pancyp likes this.
  27. gotenxds

    gotenxds

    Joined:
    Sep 22, 2018
    Posts:
    12
    Hello, I'm trying to load data in the editor that was saved in play mode.
    How do I go about doing this, currently I get NULL from the load method
     
  28. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hi.
    You should be able to do that, that's weird if you get a NULL error.
    Maybe, you are using a storage that is only available in PlayMode and/or you have some misconfiguration.

    Thanks.
    Regards.
     
  29. gotenxds

    gotenxds

    Joined:
    Sep 22, 2018
    Posts:
    12
    Hello, I dont think so, here is my code from playmode:

    Code (CSharp):
    1. public class DataController : MonoBehaviour
    2. {
    3.     private Ailment[] ailments;
    4.     private Element[] elements;
    5.     void Awake()
    6.     {
    7.         SaveGame.Serializer = new SaveGameBinarySerializer();
    8.  
    9.         DontDestroyOnLoad(gameObject);
    10.  
    11.         ailments = SaveGame.Load<Ailment[]>("Ailments");
    12.         elements = SaveGame.Load<Element[]>("Elements");
    13.     }
    Works just fine, returns all data

    From edit mode:

    Code (CSharp):
    1. using UnityEditor;
    2. using BayatGames.SaveGameFree;
    3.  
    4. public class ElementWindow : EditorWindow
    5. {
    6.     public Ailment[] ailments;
    7.     public Element[] elements;
    8.  
    9.     [MenuItem("Tools/David/Elements")]
    10.     static void Init()
    11.     {
    12.         EditorWindow.GetWindow(typeof(ElementWindow)).Show();
    13.     }
    14.  
    15.     void OnGUI()
    16.     {
    17.         if (elements == null)
    18.         {
    19.             ailments = SaveGame.Load<Ailment[]>("Ailments");
    20.             elements = SaveGame.Load<Element[]>("Elements");
    21.  
    22.             SerializedObject serializedObject = new SerializedObject(this);
    23.             SerializedProperty serializedProperty = serializedObject.FindProperty("elements");
    24.             EditorGUILayout.PropertyField(serializedProperty, true);
    25.  
    26.             serializedObject.ApplyModifiedProperties();
    27.         }
    28.     }
    29.  
    30. }
    Always stays null.
     
  30. Robert_Kirov

    Robert_Kirov

    Joined:
    Nov 10, 2018
    Posts:
    1
    Hello, friends! I have a nooby question. Sorry)
    It looks like I successfully imported Save Game in my project. I see all the files in my Assets. But why I can't find Save Game in Window panel? I can't find Save Game in Add Component too. Why?
    Sorry, if this is a nooby question.
    Best wishes! Thanks!)
     
  31. uglymug

    uglymug

    Joined:
    Jul 14, 2016
    Posts:
    6
    Hi All,

    I am trying the free version before committing to the paid version, i just wanted to make sure that it will do what I need. I'd be grateful if someone could advise if my issue, below, is because I am on the free version or because I amd doing something dumb.

    I have my own Class:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4.  
    5. [System.Serializable]
    6.  
    7. public class SeasonData
    8. {
    9.     public List<EpisodeData> S1 = new List<EpisodeData>();
    10. }
    11.  
    12. public class EpisodeData
    13. {
    14.  
    15.     public int StartingTime;
    16.     public int IntValue2;
    17.     public int IntValue3;
    18.     public string LevelName;
    19.  
    20.     public List<Vector3> zombiespawnposition = new List<Vector3>();
    21.  
    22. }  
    And I use the following Script to write to the file:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. using BayatGames.SaveGameFree;
    6.  
    7.  
    8. [System.Serializable]
    9.  
    10. public class SaveAnythingTaggedAsZombie : MonoBehaviour
    11. {
    12.  
    13.    GameObject respawnPrefab;
    14.    GameObject[] respawns;
    15.  
    16.  
    17.     void Start()
    18.     {
    19.  
    20.         SeasonData Season1 = new SeasonData();
    21.         EpisodeData E1 = new EpisodeData();
    22.  
    23.         E1.StartingTime = 288;
    24.         E1.IntValue2 = 2;
    25.         E1.IntValue3 = 3;
    26.         E1.LevelName = "Tutorial";
    27.  
    28.         respawns = GameObject.FindGameObjectsWithTag("Zombie");
    29.  
    30.         foreach (GameObject respawn in respawns)
    31.         {
    32.             E1.zombiespawnposition.Add(respawn.transform.position);
    33.         }
    34.  
    35.         Season1.S1.Add(E1);
    36.  
    37.  
    38.  
    39.  
    40.         EpisodeData E2 = new EpisodeData();
    41.  
    42.         E2.StartingTime = 2134;
    43.         E2.IntValue2 = 123;
    44.         E2.IntValue3 = 4;
    45.         E2.LevelName = "Tutorial 22222222";
    46.  
    47.         respawns = GameObject.FindGameObjectsWithTag("Zombie");
    48.  
    49.         foreach (GameObject respawn in respawns)
    50.         {
    51.             E2.zombiespawnposition.Add(respawn.transform.position);
    52.         }
    53.  
    54.         Season1.S1.Add(E2);
    55.  
    56.         Debug.Log(Season1.S1.Count);
    57.  
    58.         SaveGame.Save<SeasonData>("Season1", Season1);
    59.     }
    60.  
    61. }
    The file writes out just as expected. Note the Debug.log line which which prints out that I do indeed have 2 members on the List. My problem comes when I try to load the file back in to a List. I use the following code:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. using BayatGames.SaveGameFree;
    6.  
    7. [System.Serializable]
    8.  
    9. public class LoadZombieFileAndInstantiate : MonoBehaviour {
    10.  
    11.     public GameObject respawnPrefab;
    12.  
    13.     void Start () {
    14.  
    15.         SeasonData Season1 = new SeasonData();
    16.      
    17.         SaveGame.Load<SeasonData> ("Season1", Season1);
    18.  
    19.         Debug.Log(Season1.S1.Count);
    20.  
    21.  
    22.     }
    23. }
    This doesn't throe any errors but the Debug.Log prints 0.

    I do have a list within a list. Is this causing the issues?

    I'd be most grateful for any assistance as this is doing my head in.

    cheers

    Ian
     
  32. RoninGT

    RoninGT

    Joined:
    Apr 16, 2018
    Posts:
    10
    I just started using the Save Game Free and in the editor, it works flawlessly but when I port it over to my android device it doesn't save. Any suggestions?

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using BayatGames.SaveGameFree;
    5.  
    6. public class PlayerData : MonoBehaviour
    7. {
    8.     public static PlayerData Instaince { set; get; }
    9.  
    10.     public List<string> playerGarage;
    11.     public int nitroPowerupsOwned;
    12.     public int hydroPowerupsOwned;
    13.  
    14.     void Start()
    15.     {
    16.         Instaince = this;
    17.  
    18.         playerGarage = SaveGame.Load<List<string>> ("PlayerGarage");
    19.         nitroPowerupsOwned = SaveGame.Load<int>("Nitros");
    20.         hydroPowerupsOwned = SaveGame.Load<int>("Hydros");
    21.  
    22.         if (playerGarage == null)
    23.             playerGarage = new List<string>();
    24.     }
    25.  
    26.     void OnApplicationQuit()
    27.     {
    28.         SaveGame.Save<List<string>> ("playerGarage", playerGarage);
    29.         SaveGame.Save<int>("nitroPowerupsOwned", nitroPowerupsOwned);
    30.         SaveGame.Save<int>("nitroPowerupsOwned", hydroPowerupsOwned);
    31.     }
    32. }
     
  33. Taran3D

    Taran3D

    Joined:
    Jun 13, 2013
    Posts:
    4
    thanks that worked ! for webgl
     
  34. Kobaltic1

    Kobaltic1

    Joined:
    Jan 22, 2015
    Posts:
    183
    what type do I use for a 2d array. I tried
    Code (CSharp):
    1. BayatGames.SaveGameFree.SaveGame.Save<int[,]>("myArray", myArray);
    but it didn't work
     
  35. Wandersoul

    Wandersoul

    Joined:
    Aug 28, 2013
    Posts:
    35
    Have a troubleshooting question. I wanted to test out the asset using the initial free version and was able to save a custom file type (CampaignSaveDto) that contained a few lists and some enum based fields. The file saves to JSON successfully, but doesn't load as anything other than a bunch of null fields

    Does Save Game Free support enums? If I upgrade to pro will that resolve the issue?

    Moreover, if there a good way to troubleshoot loading data failures? I don't seem to get any exceptions, just an empty object.
     
  36. LumoKvin

    LumoKvin

    Joined:
    Sep 28, 2019
    Posts:
    195
    Does it work with Xbox, Nintendo Switch and PS4?
     
  37. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Yes, it uses File storage on standalone and other platforms, but uses PlayerPrefs for rest of them.
    So, you should be fine using it there as well, you might need to modify IOSupported method of SaveGame class to add Nintendo Switch as unsupported platform for file operation so it uses PlayerPrefs there as well which works fine.

    Hope this helps.
     
    andreiagmu likes this.
  38. vasanthbalaji

    vasanthbalaji

    Joined:
    Nov 15, 2014
    Posts:
    34
    @hasanbayat

    Uploading Crash Report

    Exception: No input

    at FullSerializer.fsJsonParser.Parse (System.String input) [0x00000] in <00000000000000000000000000000000>:0

    at FullSerializer.fsJsonParser.Parse (System.String input) [0x00000] in <00000000000000000000000000000000>:0

    at BayatGames.SaveGameFree.Serializers.SaveGameJsonSerializer.Deserialize[T] (System.IO.Stream stream, System.Text.Encoding encoding) [0x00000] in <00000000000000000000000000000000>:0

    at BayatGames.SaveGameFree.SaveGame.Load[T] (System.String identifier, T defaultValue, System.Boolean encode, System.String password, BayatGames.SaveGameFree.Serializers.ISaveGameSerializer serializer, BayatGames.SaveGameFree.Encoders.ISaveGameEncoder encoder, System.Text.Encoding encoding, BayatGames.SaveGameFree.SaveGamePath path) [0x00000] in <00000000000000000000000000000000>:0

    at BayatGames.SaveGameFree.SaveGame.Load[T] (System.String identifier, BayatGames.SaveGameFree.Serializers.ISaveGameSerializer serializer) [0x00000] in <00000000000000000000000000000000>:0

    Im getting error in ios device , in android it is working perfectly,Dont know how to resolve this issue.please help me out.
     
  39. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    Hello.
    The Save Game Free uses FullSerializer as its core serialization library, so make sure to apply these settings if you get any errors on AOT and IL2CPP platforms:
    Hope this helps.
     
  40. vasanthbalaji

    vasanthbalaji

    Joined:
    Nov 15, 2014
    Posts:
    34
    @hasanbayat

    Whether i have to add script for AotHelpers and Linker.xml in the project
     
  41. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    First try with link.xml which fixes the issues most of the times, if that didn't work, then go for that AotHelpers.

    Sorry for the inconvenience, hope this helps ❤️
     
  42. vasanthbalaji

    vasanthbalaji

    Joined:
    Nov 15, 2014
    Posts:
    34
    @hasanbayat
    link.xml is not working getting same errors and i created AotHelpers C# script file ,it is throwing errors. Have attached screenshot,please check it. Error.PNG
     
  43. hasanbayat

    hasanbayat

    Joined:
    Oct 18, 2016
    Posts:
    630
    What stripping level you've been using before applying link.xml? did you try to disable stripping and test if it works, and then try again with a little stripping?

    By the way, you're serializing some UnityEvent types as I see in the error, that might be the issue when using with IL2CPP?
     
  44. vasanthbalaji

    vasanthbalaji

    Joined:
    Nov 15, 2014
    Posts:
    34
    @hasanbayat
    Please check player settings screenshot player settings.PNG
     
  45. vasanthbalaji

    vasanthbalaji

    Joined:
    Nov 15, 2014
    Posts:
    34
    @hasanbayat
    Disabled strip Engine code,still problem persists
     
  46. TsdTeam

    TsdTeam

    Joined:
    Nov 28, 2019
    Posts:
    4
    Hi @hasanbayat. Thanks for your asset.
    When I uninstall and install new apk. The old version doesn't delete data file. So it will throw bugs because my new data doesn't match with old data. So it will parse error.
    I checked and see data file is saved in Application.persistantDataPath.
    How to deleted data file when user uninstall app or update new version, seem data saved in playerPrefs will deleted when uninstall app, How can I fix it. Please give me somes solutions.
    Thanks a lot!
     
  47. emper0r04

    emper0r04

    Joined:
    Mar 24, 2020
    Posts:
    1
    Hi,
    I'm somewhat of a newbie and currently working on a Android&IOS App using your asset. Local saving is working like a charm, but i can't get the cloud saving to work (with google drive at least).
    Are there any more details or demos for Cloud saving (Google Drive or OneDrive)

    Any help would be much appreciated.
     
  48. JunhengLiu

    JunhengLiu

    Joined:
    Oct 18, 2017
    Posts:
    1
    It seems like doesn‘t work on Platform UWP.
    Anyone can help me?
     
  49. UDN_73f6dafb-f333-4c20-9d33-3204e9ed4b4f

    UDN_73f6dafb-f333-4c20-9d33-3204e9ed4b4f

    Joined:
    Dec 6, 2016
    Posts:
    1
    Hi,
    Save game free is very easy to use.. but i have 1 question., How can we save all the game data in single encrypted Json file?
    Code (CSharp):
    1. SaveGame.Save <int> ("SampleInt", 1);
    2. SaveGame.Save <string> ("SampleString", "Hello");
    As i observed i think it is creating 2 separate files SampleInt & SampleString.
    So my question is, is it possible to save both data in a single json file?
    I have many data to save and it might create too many files so i am trying to save all in single json file... any help is appreciated.
    Thanks
     
  50. codestudyls

    codestudyls

    Joined:
    Jun 18, 2019
    Posts:
    1
    Hi! I'm probably having a very stupid question, but - I can't find save files, is the path for mac "/Users/*username*/Library/Preferences" correct?