Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

Easy Save - The Complete Save & Load Asset for Unity

Discussion in 'Assets and Asset Store' started by JoelAtMoodkie, May 28, 2011.

  1. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    This very much depends on how your project is structured and what works best for you (multiple folders is best if you're going to separate save data into multiple files). However, I would recommend taking a look at our guides to see how you would best integrate it with your project. In particular the Saving and Loading GameObjects and Prefabs guide would be most useful: https://docs.moodkie.com/easy-save-3/es3-guides/saving-loading-gameobjects-prefabs/

    The Auto Save guide will also be useful to see if this is applicable in your situation, though some people prefer having the flexibility of using the ES3.Save and ES3.Load methods, which will allow them to store only the data which needs to be stored: https://docs.moodkie.com/easy-save-3/es3-guides/auto-save-saving-without-code/

    I also recommend taking a look at the Supported Types guide to see what is supported out of the box, and what might require a bit of tinkering: https://docs.moodkie.com/easy-save-3/es3-supported-types/

    All the best,
    Joel
     
  2. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    423
    Thanks, I tried to save the skinned mesh with the auto saved and noticed the blendshape weight isnt saving so I will have to do that manually. Im wondering if the material instance can somehow be saved right away but I doubt it since Im using a custom shader and also adding additional textures for tattoos and things like that, I guess it wont work without some coding from my side.
     
  3. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    If you PM me your email address and invoice number I can send you an update which saves the SkinnedMeshRenderer's BlendShapeWeights.

    With regards to the Material, if using a custom shader then it will only be able to save the properties of the shader which are present in the standard shaders. If they differ, you would need to manually save the properties of the shader.

    All the best,
    Joel
     
  4. AL_W

    AL_W

    Joined:
    Jan 25, 2016
    Posts:
    327
    Hi @joeltebbett

    I think I'm doing something wrong. :oops: When I save or load my settings, I get a 1-2 second freeze during the game play.

    Do you have any tips on how to load \ save the game progress without freezing the game?

    Thanks!
     
  5. thelebaron

    thelebaron

    Joined:
    Jun 2, 2013
    Posts:
    518
    Has EasySave been tested in 19.3? I'm unable to open the easy save window in b8
     
  6. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    If it's freezing then it's likely that you're saving a lot of data, so I would first check that you're only saving the variables which need to be saved. If it's absolutely necessary to save a lot of data, you might consider splitting your save calls over multiple frames using a coroutine.

    If you're using multiple ES3.Save calls, you can consolidate these into a single I/O call using ES3File, which will also remove the overhead of random access. This will also allow you to defer writing the data to file until a time when any performance drop is less noticeable (for example, before exiting the scene or quitting the application).

    All the best,
    Joel
     
  7. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Unfortunately we can't assist with beta versions of Unity as they are known to be unstable. I'm not currently getting any errors in the latest beta, but I recommend you send a bug report to Unity so that they can understand what is happening at their end.

    All the best,
    Joel
     
  8. AL_W

    AL_W

    Joined:
    Jan 25, 2016
    Posts:
    327
    Hi Joel,

    Thanks for the advice. I'll try out ES3File, that looks pretty interesting

    Just so I'm clear, does this mean during runtime I can call:

    Code (CSharp):
    1. file.Sync();
    ... and there won't be a freeze during gameplay? Or is it still best to use this for scene changes.

    I'd like to have real time saving for certain player actions.

    Thanks!

    Edit: By the way is there a way to look at the easy save file to review what's been saved?
     
    Last edited: Nov 8, 2019
  9. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    There will be less of a freeze when calling file.Sync(), because the overhead of random access will be lower, and it will only need to write to file once. But I always recommend saving the data to file only when necessary.

    If you want to look at the file you can go to Window > Easy Save 3 > Tools, press Open Persistent Data Path and open the file from there. The data will be in JSON format.

    All the best,
    Joel
     
  10. AL_W

    AL_W

    Joined:
    Jan 25, 2016
    Posts:
    327
    Hi @joeltebbett

    It seems to have done the trick! No more freezing! I need to do more testing, but thanks ahead of time :)
     
  11. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Glad to hear that (hopefully) worked :)

    All the best,
    Joel
     
  12. bz_apps

    bz_apps

    Joined:
    Aug 19, 2014
    Posts:
    26
    HI i posted on your forum but thought id ask here anyaway.

    Is there a way to not use the ES3 Reference Manager? Currently it has 1000's of items in it from lots of different scenes. This is showing up in memory too which cant be correct?

    All i really want is an advanced playprefs api to save different types like list of things. I dont want automatic references.

    Thanks.
     
    skinwalker likes this.
  13. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    To disable this you can go to Window > Easy Save 3 > Settings and uncheck Automatically Update References. You will also need to delete the Easy Save 3 Manager (it will automatically re-generate, which is normal) to remove the existing references from the manager. If saving references, you will also need to delete your existing save data.

    Note that you can still manually add references to the ES3ReferenceMgr of the Easy Save 3 Manager GameObject by dragging them into the References array.

    There's a bug in Unity's dependency collector which after quite a few months of back and forth with them it appears that they're not interested in fixing. So in the upcoming update automatic reference updating will be removed, and will be providing the ability to choose what gets added to the reference manager.

    All the best,
    Joel
     
  14. bz_apps

    bz_apps

    Joined:
    Aug 19, 2014
    Posts:
    26

    Thanks for getting back to me so quickly.

    Do I have to have the manager in all scenes? Currently i just use ES2.Save<...>().... in code. No references needed,
     
  15. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    You only need the manager in scenes which you're using Auto Save in, or are saving anything by reference in (for example, classes with fields which derive from UnityEngine.Object).

    If you want to stop the manager from being automatically created, you can uncheck Auto Add Manager to Scene in the settings.

    All the best,
    Joel
     
    bz_apps likes this.
  16. domdev

    domdev

    Joined:
    Feb 2, 2015
    Posts:
    349
    Hi, I have problem with remove save files when uninstalling the app in some phone, the save files stay at the phone after uninstalling, the problem is when I reinstall the app the files loads which is should not cause its already uninstalled in first place..any idea? I'm using v2.8.3
     
  17. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Unfortunately we have no control over whether files are removed when removing the app as this is controlled by the OS. I recommend approaching the support for the particular mobile platform you are using, or a forum for that platform. Unity support might also be able to point you in the right direction.

    All the best,
    Joel
     
  18. ANUBISKONG

    ANUBISKONG

    Joined:
    Nov 16, 2016
    Posts:
    40
    Hi, I tried to load a object with some particlesystems as children, then get some error. I'm using unity 2019.3.0f1 and es3 lastest version.
    批注 2019-12-04 171536.jpg
    批注 2019-12-04 171527.jpg
     
  19. domdev

    domdev

    Joined:
    Feb 2, 2015
    Posts:
    349
    yes that was I was think it already outside the device.. so it could be device.. not all device was having a problem
     
  20. OreoSplitter

    OreoSplitter

    Joined:
    Oct 21, 2017
    Posts:
    33
    What affects performance? As the save file grows (2+ MB) does finding keys get slower even if say 50 keys exist? Saving/Loading a key, does the actual save file size have an impact on the time it takes beyond the data in that key? I have large arrays but few objects. I hope by having few entries the size doesn't have an impact.

    I'm trying to visualize how data is saved/loaded. Does it go through each character one by one from the beginning or does it go to each key, then the data inside it?
     
    Last edited: Dec 6, 2019
  21. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Please could you PM me a basic project which replicates this?

    All the best,
    Joel
     
  22. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    The biggest impact to performance would be having many keys in a file, because this increases the overhead of random access. However, you can remove this overhead using an ES3File to cache the data locally (https://docs.moodkie.com/easy-save-3/es3-guides/caching-using-es3file/).

    The size of the file will always have an effect because it will increase the amount which gets parsed. Data will be read character-by-character unless it's of a type which as a fixed length. I always recommend only saving the variables which need to be saved if reducing file size and improving performance is important. For example, instead of saving entire Transforms you might instead save only the position and rotation, as this would significantly reduce the amount of data which needs to be saved and loaded.

    Hope this helps.

    All the best,
    Joel
     
  23. skytow2003

    skytow2003

    Joined:
    Feb 9, 2014
    Posts:
    29
    Hi.
    Can you give me a brief example of how to save the data that I keep inside a Scriptable Object ?
    I couldn't understand from your site
     
  24. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    You can save and load ScriptableObjects in precisely the same way you save and load any other data. I.e.

    ES3.Save<YourType>(key, yourScriptableObject);
    yourScriptableObject = ES3.Load<YourType>(key, yourScriptableObject);

    All the best,
    Joel
     
  25. skytow2003

    skytow2003

    Joined:
    Feb 9, 2014
    Posts:
    29
    Hi.
    now it worked. It wasn't really clear that to be able to see the changes to my SO in the inspector after loading it I would have to use LoadInto. using Load I probably would have to populate it myself.
    my bad, I guess.
    thanks for the quick response, have a good day
     
  26. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    HI,I try to save "EquipmentClass" data may content "Id,Name,Lv,Des..." by EasySave3.0.

    Here is my question :Could type like “List<EquipmentClass> ” be supported?I saw type of List<T> have been supported.
     
  27. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Lists of supported types are automatically supported, so if EquipmentClass is supported then List<EquipmentClass> is also supported.

    You can find information on saving Lists in the Getting Started guide (you save them in the same way as any other data.

    All the best,
    Joel
     
    skcai likes this.
  28. UnityGISTech

    UnityGISTech

    Joined:
    May 6, 2015
    Posts:
    61
    Add your equipementClass to the saved classe by ES3 interface check variables that will be saved. Your list will be saved automaticly ..
     
    JoelAtMoodkie and skcai like this.
  29. Starbox

    Starbox

    Joined:
    Sep 17, 2014
    Posts:
    93
    Hi,
    I'm using Playmaker and Es3. I'm running tests on actions to understand what is happening.
    I also read the documentation a lot but I have some issues that remain unresolved.

    First of all, the most basic test was with the action ES3/ Save. I had set a failure event for error handling (I do that for all ES3 actions).
    Without overriding the Default Settings (DS), the saving will not use encryption because the option is not available. If no ES3 file exists, it will use the one defined in Settings. I had errors until I understood that I had to remove encryption in the Settings for this action to work.
    Of course know it sounds logical and obvious but without any information provided by the action's description in Playmaker or on the website, I was a bit lost at first.

    Now, as I read the documentation, I see mentions of file and ES3file and in Playmaker there even is a FsmES3File type but there's nothing in the scene or assets. And I'm not even talking about caching a file.
    I want to understand what's going on. How many files or file types are there when one uses ES3 exactly?

    I have been using Create ES3 File with default options. It should create some ES3 file at the persistent data path location, but no ES3 file gets created (in the "File Path" field, I simply type "[name_of_file].es3"). This would be explained because I am not providing a FsmES3File to point at, but I have not the faintest clue what that file is, nor when this Playmaker-relative file is created.

    I also tried the ES3File Sync action, but the doc says "Synchronises this ES3File with a file in storage."
    What is this file in storage, and what is the storage in fact? Memory? How is it reached?

    I also see the use of backups (.bak), that's nice. So, how one should handle a crash? ApplicationOnQuit() won't be triggered by such a crash. I'm not sure what kind of impact the backup file creation has on performance but that's likely not something to do too often, correct? For example, pausing the game, a game over, loading an ad or simply buying some item (IAP) seem to be good times to do such a backup?

    Finally, how do I cache the "file" so as to make writings and readings faster?
    Is there an action to set a file in cache more or something?
     
  30. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    Thanks so much!
    And Happy New Year! :)
     
    JoelAtMoodkie likes this.
  31. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    Thanks so much!
    And Happy New Year! :)
     
    UnityGISTech likes this.
  32. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    For basic saving and loading you only need the Save and Load actions. The file is created for you when you save data. A basic example can be found here.

    As with most PlayMaker actions, the actions mirror the code API, so actions containing ES3File relate to the ES3File functions of Easy Save which handle caching. A summary of these actions can be found here.

    First, you use the ES3File Create action to create a cached file, which you can put into an FsmES3File variable. This is a file that is in memory, not a local file. If the Sync With File box is checked, it will look to see if this file exists locally and load the data from it into the ES3File (i.e. caching the data from the local file into memory).

    You can then write data to this ES3File using the ES3File Save action, ensuring that you provide your FsmES3File variable in the ES3 File field.

    Then similarly, to load from the ES3File, using the ES3File Load action.

    Now to store this to a local file, or syncronise it with an existing local file, use the ES3File Sync method.

    With regards to backups, it very much depends on your game when best to store a backup, and when to recover. Generally people recover from the backup when their load code enters the error state. The performance impact of performing the backup depends on the size of the file, and because it is essentially performing a file-copy operation, it depends on how well the OS performs file-copy operations (on Apple APFS it's super quick, on Windows NTFS less so).

    Hope this helps!

    All the best,
    Joel
     
    skcai likes this.
  33. Starbox

    Starbox

    Joined:
    Sep 17, 2014
    Posts:
    93
    First of all Happy New Year!
    Thank you for this reply, I can now return to some parts of the guides and understand a few more things. Sorry if this sounded illogical.
    I much appreciate the time you put into the modular actions; I like the option to override the Default Settings. It's tidy.

    I notice that my first paragraph about saving wasn't clear enough. What I meant is that the basic Save action didn't work if encryption was set to true in the Default Settings of ES3.
    I had this solved simply by setting encryption to false for my test.

    I'll go through each one of your points to see if I get them right. This is going to be a bit long but hopefully will also prove useful for other Playmaker users.

    Yes, it creates a file, either using the Default Settings or the action's overridding parameters.

    Oh I see, I had it the other way round, mistaking this field for an origin field instead of a destination where a value is set into the targeted object. Woops. Rather weird in fact because I'm fluent in Playmaker.
    Anyway, I got it tested with the ES3 File Save action, it works only if the target file is set but that's fine.

    Ok this explains why I could not find it once created and yet never got an error returned.

    This ES3File is unique in that although I suppose it's an es3 file too, it is only meant to be stored in memory during the app's activity.

    Yes. I was initially confused between the Sync With File option and the ES3 File Sync action.
    Both are doing synchronizing, but absolutely not the in the same direction.
    First one during ES3File creation goes: stored es3 file -> into cached ES3File. Second one goes ES3File -> into stored es3 file, overwriting the latter's keys with the values of the former's ones if both files share the same keys.

    Well, got that sorted, feeling better. :)

    OK.

    That was my plan but why would there be an error if a file does exist?
    Does ES2 recognize corrupt values? That is, badly written keys and their respective values during their saving?

    It will be on mobile chiefly and there should not be many things to save, most will be bools, ints, floats, strings. Maybe an array or two.

    As for the ES3 File Clear action, why is the description for the ES3 File:
    "The relative or absolute path of the directory we want to get the sub-directory names from."
    since it's not a string field?
     
  34. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    It sounds like there might already be save data which has been saved without encryption, in which case deleting the old save data should fix this. You can find the default save path by going to Window > Easy Save 3 > Tools > Open Persistent Data Path.

    If the formatting of the data is incorrect in any way (which usually signifies tampering or corruption), an InvalidDataException will be thrown.

    As long as you're not doing it every frame, performing a backup should be negligible on performance.

    This is an error in our docs. I'll go ahead and fix that now :)

    All the best,
    Joel
     
  35. logixworx

    logixworx

    Joined:
    Jun 29, 2017
    Posts:
    79
    I've imported Easy Save 3 directly from the Asset Store and it appears under the Plugins folder. I see the menu option under Assets, GameObject and Window, and Easy Save 3 Manager is automatically added to my scenes, but the ES3 class is not available to my code - 'the name ES3 does not exist in the current context'. What am i missing?


    using Unity 2019.2f1
     
  36. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Are there any compiler errors in your project? This will prevent Easy Save from being compiled until they are resolved.

    All the best,
    Joel
     
  37. logixworx

    logixworx

    Joined:
    Jun 29, 2017
    Posts:
    79
    I figured out that the issue has to do with where my script is located. When I move my script file to the root Assets folder, then ES3 is available to my code. ES3 is not available if my script is in Assets/MyProject/Examples/Scripts. How do I fix that?
     
  38. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    What scripts get compiled and when it's controlled at Unity's end, not ours. You would need to contact them regarding this as I'm not sure why your folder would work any different to the assets folder. Perhaps you have an Assembly Definition File defined?

    However, I strongly advise keeping Easy Save 3 in the default location of Assets/Plugins, because this ensures that it is compiled before any other scripts.

    All the best,
    Joel
     
  39. logixworx

    logixworx

    Joined:
    Jun 29, 2017
    Posts:
    79
    alright. another question - when I load an additive scene that contains a script that calls

    void Start()
    {
    ES3.Load<GameObject>("TestObject");
    }

    TestObject is spawned in the main scene, rather than the newly loaded additive scene. (I say 'spawned' because I'm using Mirror networking - TestObject has a NetworkIdentity.) How do I instantiate TestObject in the newly loaded additive scene that contains the script that called ES3.Load?
     
  40. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    The object should be created in the scene which contains the script, as we simply call new GameObject() or Instantiate(prefab) at our end. If you're getting different behaviour, it sounds like a bug at Unity's end. In this case, would you be able to create a new project with the minimum required to replicate it and private message it to me so I can check whether this is the case?

    Edit: just reading into this further, it looks like Unity instantiates into the active scene. In which case, you would need to set the active scene to the one you want the data loaded to.

    All the best,
    Joel
     
  41. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    423
    Hello, I have a question about Easy Save 3.

    Lets say I have a script I want to serialize called PlayerData that looks something like this

    Code (CSharp):
    1. public class PlayerData
    2. {
    3. public int Health = 100;
    4. }

    I will save and load this class for a period of time and then may decide to add another field in that class like

    Code (CSharp):
    1. public class PlayerData
    2. {
    3. public int Health = 100;
    4. public int Damage = 50;
    5. }

    Now what happens to the old saves that didnt have Damage? if I try to load an old file PlayerData that doesnt have Damage, is it going to throw an exception because my class looks different now? I want to know if its a reliable way to keep adding fields to a class that may exist in an old save file without those fields. I was having these issues with the BinaryFormatter.
     
  42. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Easy Save won't have any issues loading this. It'll just load the Health field and do nothing with the new Damage field.

    Similarly if you remove a field, Easy Save will skip that field when it comes to load it.

    All the best,
    Joel
     
    skinwalker likes this.
  43. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    423
    Thanks, I fully switched to Easy Save and love how simple and fast performant it is :)
     
    JoelAtMoodkie likes this.
  44. zoraDra

    zoraDra

    Joined:
    Feb 7, 2016
    Posts:
    3
    Hello, new around here. I searched a few of the questions asked but I got nothing.
    I created a 'List<GameObject>' and filled it with some prefabs. I used a function to select one of those prefabs and get its script, which contains the object's data. I then save that data with
    es3.Save<ObjectData>("ObjectKey", FunctionThatReturnsAnObjectDataFromAnObject(FunctionThatPickAnObjectAtRandomFromAList));


    So, if I have a Public SpriteRenderer once I load the Data back. I should be able to call the SpriteRenderer Reference. NO?

    The second thing is Once the new Scene is loaded, The script >Loads the ObjectData that was saved and assigns it to the Player as a weapon/ability/something. However, I always get an Easy Save 3 Loaded GameObject that says

    "This GameObject was created because Easy Save could not find a GameObject in the scene with the same instance ID as the GameObject Component we are loading is attached to. To prevent this from being created, use the LoadInto methods to tell Easy Save what component the data should be loaded into."

    I honestly have no idea how to start fixing that. I get 2 scripts with the GameObject Data/Script and the one that the player has still gets loaded to

    there is a public ObjectData, which is a script, that is inside a PlayerData script that is public and contains all the Data for the player. Then player then Loads than Script into its own


    public void LoadPlayerData()
    {
    Debug.Log("LOADING PLAYER DATA");
    if (ES3.KeyExists("playerdata"))
    {
    Player.instance.playerData = ES3.LoadInto<PlayerData>("playerdata", this.playerData);
    }
    }


    However this tells me i cant convert void to PlayerData.

    Any help would be appreciated. thank you!
     
    Last edited: Jan 11, 2020
  45. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Assuming that the SpriteRenderer you speak isn't instantiated at runtime then yes. If it's part of a prefab instantiated at runtime, it will have a different instance ID each time the prefab is instantiated so there would be no way of being able to refer back to that SpriteRenderer.

    In this case, you would want to save and load the prefab instance so that the instance IDs are the same each time. For more information on this, see the Saving and Loading Prefab Instances section of the Saving and Loading GameObjects guide.



    This is because a script cannot exist without a GameObject to attach it to, so Easy Save has to create a GameObject to attach it to.

    However, as you seem to have found, you can use ES3.LoadInto to load the data into the instance that you provide as a parameter.

    This method does not return anything, so your code shouldn't try to assign the result of the method to anything.

    All the best,
    Joel
     
  46. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    HI, I met the same problem, did you fix it?
     
  47. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    We've still not been able to replicate this at our end, so if you have a basic repro project please feel free to PM it to me.

    Our upcoming update relies less on Unity's CollectDependencies method (which is always what triggers black text bugs), so hopefully that will resolve it anyhow.

    All the best,
    Joel
     
  48. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    Hi,It's grate for the upcoming!
    I am learning how to use ES3 to save my game.And the problem happened after I imported my project which have a Scene with a default name("SampleScene").Then I import our ES3.

    So,I deleted the project. Created a new One,Then created new scene with difference name like"SceneTest".In the end
    I changed the Editor Settings in the ES3,Didn't choose "Auto Add Manager to Scene""Auto Update References!"

    To my surprise ,It's fixed. The color is collect.

    Hope this description could be useful to help us to analysis this problem!
    I am trying to find any other reasons.

    Thanks!
     
  49. skcai

    skcai

    Joined:
    Oct 8, 2019
    Posts:
    15
    Hi!
    I try to save a Dictionary<int,int> type which code like:
    hope I could save when the value changed.

    upload_2020-1-17_17-34-11.png


    upload_2020-1-17_17-34-45.png

    upload_2020-1-17_17-37-59.png
    What I want to do is to save new value 10, But the result was 30.
    Did I make a wrong way to Save Dictionary type?
     
  50. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    601
    Hi there,

    Thanks for the information. Unfortunately this doesn't seem to have helped me replicate the issue. Would it be possible for you to send me over a project which replicates it?

    All the best,
    Joel
     
unityunity