3.5.20
- Added support for Nullable types.
- Resolved issue where a Debug.Log call was not stripped from the release package.

3.5.19
- NEW: Added Save Slots functionality (see https://docs.moodkie.com/easy-save-3/es3-guides/creating-save-slots/).
- All dependency Texture2Ds of a SpriteAtlas will be automatically excluded from reference managers.
- Added option to Set Reference ID in context menus, allowing people to add or change a reference to use a specific reference ID.
- Resolved issue where ES3.GetFiles would not work with some types of relative path.
- Resolved issue where CharacterController isn't always re-enabled after loading.
- Resolved issue where excluding references from a manager would not persist in specific situations.

3.5.18
- Non-functional changes (Asset Store metadata changes)

3.5.17
- Changed referencing so that in most cases it will find any reference manager if it can't find one in the relevant scene and outputting a warning when this happens.

3.5.16
- Moved methods in ES3.cs inside of DISABLE_ENCRYPTION define so they are also stripped accordingly.

3.5.15
- Resolved issue where a scene not in the build list could cause the Prefabs window to fail to open.

3.5.14
- Resolved issue on some versions of Unity where the Editor would throw a harmless MissingReferenceException after removing an Easy Save 3 Manager.

3.5.13
- Resolved issue where adding a manager to scene or enabling Auto Save would throw a NullReferenceException.

3.5.12
- References in DontDestroyOnLoad are now added to the first available reference manager rather than requiring it's own manager.

3.5.11
- GameObjects and Components are now added to their scene's reference manager when using additive scenes.
- Resolved issue where enums were incorrectly generated in ES3Types due to the type list not being initialized intermittently.
- Resolved harmless bug where an ArgumentException is thrown when trying to add scene which has already been added to scene manager.

3.5.10
- Resolved issue where loading a value with a dervied type using caching would cause it to be loaded as it's parent type.

3.5.9
- Added support for Unity 6.

3.5.8
- Separated Add References to Mgr into Add References to Mgr and Add Dependencies to Mgr.
- Resolved issue where references were added to manager when Auto Add References was disabled as Component was created in scene.
- Resolved issue in some cases where Optimize would not remove cached references to deleted objects.
- Resolved issue where creating an ES3Type for an object which has generic collection field with an element of the same type as itself would cause a stack overflow in certain edge cases. 

3.5.7
- Removed legacy dependency-gathering code which requires the UnityEngine.UI library.
- Resolved issues where ES3UserTypes aren't added to the reference manager on occasion.
- Reference managers are now no longer merged when using additive scenes.
- Worked around bug at Unity's end causing the Auto Save window to throw errors on Unity 2021.
- Resolved issue where ES3Prefab would throw an ArgumentException for writing the same item in the localToGlobal Dictionary.
- Resolved issue where saving primitives using PlayMaker actions with caching would cause a format error.
- Worked around issue with PlayMaker where assigning NULL to a GameObject invalidates the type of the FsmVariable.
- Made a change to ES3Cloud so that an error is manually sent when misconfigured servers reject POST parameters but continue to execute the PHP script.
- Resolved issue where priority of built-in types conflicted with user-generated types.

3.5.6
- ES3GameObject Component is now automatically moved to end of Components List to ensure that it's loaded after the Components it references.
- Resolved merge issue where cached data was being stored with it's generic type rather than actual type.
- Resolved issue where private members of inherited types wouldn't be saved in specific circumstances.

3.5.5
- References are now gathered when saving a scene and when changes are made in a scene, not when entering playmode.
- Added option to refresh reference managers in all scenes (Tools > Easy Save 3 > Refresh References for All Scenes).
- Added option to exclude references from being added to the manager (right-click > Easy Save 3 > Exclude Reference(s) from Manager).
- Added GetColumnLength and GetRowLength methods to ES3Spreadsheet.
- Resolved issue where enums would cause a FormatException when they were fields of a class with an ES3Type.
- Worked around Unity bug where initialisation events are sometimes not called when importing Easy Save.
- Worked around Unity bug where GetDirectoryName fails to work with a path to a file.
- Auto Saves are now processed in order of their position in the hierarchy.
- Resolved issue where members would be serialized twice when it was marked as ES3Serializable in both concrete and base classes.
- Worked around Unity bug where Unity would throw an error when trying to set a scripting define symbol for Stadia.
- Accounted for change in 2022.3 LTS where Unity have fixed a typo in their Editor API ("ToolbarSeachTextField")

3.5.4
- You can now enable Assembly Definition Files for Easy Save by going to Tools > Easy Save 3 > Enable Assembly Definition Files.
- Accounted for edge case where ES3File would be merged rather than overwritten, preventing keys from being deleted from the stored file.
- Resolved issue where reference collection can cause an InvalidOperationException (Collection was modified).
- Worked around bug with Unity Runner Template which prevented Easy Save types from loading.
- overrideSprite is no longer saved when saving UI.Image as Unity now returns the Sprite rather than null when this is unassigned.
- Resolved issue where Auto Save's events sometimes did not update when changing the active scene in the Editor.
- Resolved issue where saving a non-prefab instance GameObject with multiple Components would only save one of those Components.

3.5.3
- Attempting to save a Material with a RenderTexture will now throw a warning indicating that the RenderTexture won't be saved.
- Added filtering by tag in the Auto Save window by prefixing 'tag:' to the search query.

3.5.2
- Resolved issue where RectTransform was loaded incorrectly as parent is deserialized before anchoredPosition.
- Removed warning regarding Transform parents being set using the accessor rather than the SetParent method.
- ES3.CopyFile now automatically creates the target directory if it doesn't exist.
- Added an option to encrypt/compress raw cached data if the setting is defined for the cached file (postprocessRawCachedData).
- 'Add References to Manager' now permanently adds prefabs to the manager if 'Auto Add Prefabs to Manager' is enabled.
- Assembly names are now in alphabetical order so changes in order aren't registered as a change in version control.
- Using 'Add References to Manager' on a folder now adds all supported assets in that folder to the reference manager.

3.5.1
- Reverted changes to LoadRaw methods when using Cache as it caused regression issues.

3.5.0
- Added support for NativeArray.
- Managed case where ES3.EncryptBytes/DecryptBytes encountered an encoding issue.
- Worked around Unity bug where invalid assembly list would cause issues when exceptions are disabled.
- Worked around bug at Unity's end where unloaded scenes are returned by their methods.
- Resolved issue where scripting define symbols were overwritten on older versions of Unity.
- Worked around bug where inertia tensor value is rejected even when set as it's default upon loading.
- Most Material properties can now be saved, including custom properties.
- When saving a parent GameObject, children automatically have their parent set to the parent GameObject rather than loading this value by reference.
- Support added for Tuples.
- Added overload for AppendRaw which accepts a string and a filename.
- Worked around Unity bug where EventType.Layout isn't called when moving tabs for first time, causing Types pane recent types to be uninitialised.
- Worked around Unity bug which infrequently prevented Auto Save changes from persisting.
- Added ES3.Compress and ES3.Decompress methods.
- Performing 'Add Reference(s) to Manager' for a Texture2D will also add it's Sprite if one is present.
- Classes without parameterless constructors can now be serialised (note that their constructor will not be called).
- Resolved issue where an unloaded scene warning was thrown when scene is open but manually marked as unloaded in the Editor.

3.4.2
- Resolved issue where Unity Visual Scripting defines were not present on some versions of Unity.

3.4.1
- Added support for Particle System Bursts
- Resolved issue where Auto Save would sometimes save all Components regardless of settings.
- Resolved issue where Auto Save icon would not highlight when fields are selected.
- Structs with private properties or fields can now be serialized.
- Loading a blank string from a spreadsheet now returns a blank string rather than null.
- The reference manager will only collect references up to 3 levels deep to improve performance.
- System.Random support has been dropped due to Unity's implementation changing, making it non-serializable.
- ES3Ref is no longer stored twice for ScriptableObjects.
- Added support for Numerics.BigInteger.
- Internal fields of the ES3AutoSave Component are no longer displayed in the Editor.
- If a reference ID for a Component exists, it now ignores the GameObject ID so that a new GO instance is not created.
- Added a Get Streaming Assets Path action for Playmaker.
- Added non-generic versions of the ES3Spreadsheet methods to work around issue with Bolt.
- Worked around issue with Bolt where it would crash if you have two methods with the same parameters but one is generic.
- Resolved issue where Components marked as destroyed but not yet destroyed would cause unexpected behaviour.
- Auto Save will now work for additive scenes.
- Resolved issue where reference manager wasn't automatically updated when scene was open additively prior to runtime.
- Support added for Unity Visual Scripting.

3.4.0
- Caching now works seamlessly between Cloud and Auto Save.
- Added Save Multiple and Load Multiple actions to enable saving multiple specific variables at once.
- Added extra overloads to the ES3.LoadString method.
- Guids are now natively supported.
- Transform now stores the sibling index.
- Getting a timestamp for a file in cache which doesn't exist now returns a zero timestamp.
- Resolved issues where enums would sometiimes not serialize correctly when creating an ES3Type script for a class.
- Resolved issue where DownloadTimestamp PlayMaker action would download the wrong data.
- Resolved issue where reflection does not recognise a collection of a nested type as a nested type.
- Resolved issue where ES3Cloud was merged with the debug branch.
- Resolved issue where Sprites with atlased Textures would save an incorrect Rect.
- Resolved issue where ES3Spreadsheet was serializing primitives as objects when using PlayMaker actions.

3.3.2f7
- Type data is now stored when using ES3.Serialize<object>.
- Worked around issue where Unity would return an incorrect number of assemblies.

3.3.2f6
- ES3Spreadsheet now correctly serializes object types into a CSV file.
- Resolved issue where an object[] containing primitive types could not be loaded in some situations.
- Worked around issue where PlayMaker wouldn't initialize variable before it's value was reset.
- Created a workaround for some situations where Unity creates new instances of ScriptableObjects in Assets at runtime.
- Resolved issue where Base-64 encoding option would not work with newline option in PlayMaker SaveRaw action.

3.3.2f5
- Resolved issue where scripts were not overwritten by Asset Store importer, causing Easy Save to be unstable.

3.3.2f4
- Resolved issue where Save action for PlayMaker could return NullReferenceException due to using the wrong ES3.Save override.
- Worked around IL2CPP bug where reflection would not find particular ES3Types on iOS
- Resolved issue where trying to store an empty/unassigned PlayMaker object would throw a NulReferenceException.
- Keys of a type which no longer exists in the project are now automatically removed
- Abstract types used in an ES3Type will now work as intended

3.3.2f3
- Added GameObject variables to Auto Save
- Resolved issue where Sprites would be loaded with the incorrect pivot.
- Resolved issue where Stacks were loaded in reverse.
- Added a 'quality' field to the ES3.SaveImage method to allow the quality to be specified when saving JPEGs.

3.3.2f2
- Added method which allows raw bytes to be uploaded via ES3Cloud.
- Worked around issue where File IO was called on platforms which don't support it
- Accounted for situations where Component should evaluate to null but doesn't
- Updated PlayMaker actions to work around issue where global variables sometimes go missing
- Objects with the NotEditable hideFlags can now be stored by reference
- Worked around Unity bug where it fails to deserialize data when Prefab mode is open
- Resolved issue where global 'Save GameObject Children' settings can take precedence over Auto Save settings
- 'Enable Easy Save for Prefab' context menu item now works when multiple objects are selected.

3.3.2f1
- Resolved issue where Components on prefabs would sometimes not be added to the reference manager.
- Resolved issue where reference ID was read unnecesserily, causing format exception.
- Resolved issue where child prefabs would not be recognised by manager.

3.3.1p12
- Resolved case where certain references would not be added to manager.

3.3.1f11
- Fixed issue where using ES3.CacheFile with an encrypted file could fail.
- Fixed issue where Directory.GetFiles cannot process a full path on certain configurations.
- Accounted for case where HideFlags are changed during build process.
- Added a timeout parameter to the ES3Cloud constructor.
- ES3.Serialize and ES3.Deserialize now work with encryption and compression

3.3.1f10
- Full support for projects which use multiple scenes at once.
- Added ES3.Encrypt and ES3.Decrypt methods.
- Supported saving the active state and FsmVariables of PlayMaker FSMs.
- Added edge case for SkinnedMeshRenderers which use LODs to ensure that all meshes and Materials are added to the reference manager.
- Ensured that Auto Update References setting is ackowledged when first adding manager to scene.
- Moved menu items into Tools/Easy Save 3 menu.
- Using LoadInto will now assign the loaded reference ID to the object you're loading into.

3.3.1f9
- It's not possible to add an ES3ReferenceMgr to your scene directly, ensuring that initialisation code is performed.
- Compressed files can now be cached.
- Ability to only add prefabs directly referenced by your scene to the manager.

3.3.1f8
- Caching is now enabled by default for Auto Save, significantly improving performance.
- Added ES3.LoadString method so you do not need to provide all parameters to use the defaultValue overload.
- Resolved case where SaveAll would not correctly save some types of array.
- Resolved case where global references would not be acknowledged.

3.3.1f7
- Serialization depth limit has been raised to account for projects with deep hierearchies
- Fixed issue where Easy Save 3 Manager could not be found for scenes which had not been saved.
- Resolved issue where Add Reference(s) to Manager would not dirty scene when Auto Update References was disabled.
- Improved Editor performance by accounting for situations where post-processing events would be called multiple times.

3.3.1f6
- Internal fields of the UnityEngine.Object class are hidden in the Types pane as they are not serialisable.
- Accounted for edge case where unassigned script is returned by GameObject.GetComponents().
- ES3Settings constructor now accepts any settings enum (e.g. ES3.Location).
- No longer throws warning when multiple scenes are open.

3.3.1f5
- Updated PlayMaker actions.
- Provided workaround for issue where IL2CPP stripper removes methods which are marked to not be stripped.
- Performance updates.

3.3.1f4 
- Improved performance when gathering references for reference manager.

3.3.1f3
- Added Cache as a storage location, providing a much simpler way of caching data.
- References can now be added by right-clicking the object and going to Easy Save 3 > Add Reference to Manager.
- Floats and doubles are now stored with full precision.
- Assorted bug fixes.

3.3.1f2
- Added compression, reducing file size by 85% on average when enabled
- JSON is now pretty printed (formatted) by default
- Added attributes to control serialisation
- Private fields in inherited classes are now stored
- Added search capabilities to the Auto Save window
- The way in which GameObjects is saved is now more flexible
- The reference manager is now updated whenever playmode is entered
- Null values in the global manager are now automatically removed
- Fixed issue where default settings were not applied properly
- Fixed issue where ES3Types would be stored in Easy Save root rather than in Assets/Easy Save 3/