Save Toolbox

What is it?

Save Toolbox is a professional tool used for all your saving needs within unity. It can save data for objects already existing in the scene or spawn in any objects that were instantiated at runtime on a prior playthrough. This asset provides you with robust solutions for the saving inside your project at a reasonable price!


How does it work?

It is a Component and GameObject based saving system. This means if you want to save any data on a GameObject you will attach a pre-built separate save component that references it's respective component counterpart. When the game saves it will find all of these save components gather the data from them and store it into a file. When loading the data it will use a unique identifier to find which data matches to which component and load it into the component.


There is also a "LoadableObject" component that will be attached to any object that you wish to spawn at runtime from save data, e.g. a weapon you dropped previously in the map of an RPG game that you want to be loaded back in at the same position when you continue a playthrough.


❓Frequently Asked Questions❓

Do I need to be a programmer to implement Save Toolbox's functionality?

No, with a range of pre-built behaviours included and a behaviour that let's you save data from custom components, even without the ability to program you will be able to use the asset and implement it within your project. However, if you can program you may find it easier or more suited to your needs to use the available APIs in the tool rather than just the prebuilt behaviours.


I have custom scripts that I want to save data on, can it handle that?

Yes! You have 2 options when it comes to approaching this.The first and recomended option for non-programmers is to use the StbComponentSaver save component. This will be able to reference any other component and will provide you with a way to choose which data you want to save on the referenced component. The second option, you create your own custom component that inherits from AbstractSaveableMonoBehaviour and override the Serialize() and Deserialize() functions to pass through which data and how you want it to be saved.


Can I await the loading functionality?

Yes, both saving and loading can be asynchronous! This allows them to be awaited and also allows the user to be able to load and save the game whilst in a loading screen, providing information for how far through loading the user is.


Can I save references to other components?

Yes! As long as the other component implements ISaveDataEntity. Most basic scripts set up in the tool already implement this interface so will work out of the box. Any custom component will just need to implement the ISaveDataEntity interface for it to work.


Can I save references to scriptable objects?

Yes! You just need to make sure you reference them in the Scriptable Object Database.


Do you support multiple saves?

Yes, it is built on a save slot system that allows you to choose which slot the data will be saved to or no slot if you'd prefer (useful for data you want to persist between play sessions such as settings).


What file types are supported?

Currently Binary and JSON are supported.


Suitable Editors?

Works on Unity Editor 2019.3.1f1 and newer. 2021.3.0f+ recommended.


Does it support the Addressable package?

Yes! Just ensure it is imported in the project and select "use addressables" in the SaveToolboxPreferences scriptable object.