ORK Framework allows you to add custom save data to ORK’s save game system.

This is done by implementing the ISaveData interface in the class that will be used to save (e.g. a component) and register the class to the ORK save game handler.

Registering a class

To register a class, call the following function:

The parameters of the function:

  • string name
    The name used to register the custom save data.
    You can only register one custom save data for per name.
  • ISaveData saveData
    The class that implements the ISaveData interface.
  • bool beforeSceneLoad
    This flag decides if the custom save data will be loaded before (true) or after (false) a scene has been loaded.

If you want to unregister a class from the save game handler, you can call the following function:

The ISaveData interface

This interface has two functions that need to be implemented into your class:

This function is called when the game is saved. It returns a DataObject, which holds all the data that you want to save.

This function is called when a save game is loaded. The DataObject passed as parameter contains the data that is saved. It’s crucial to make a check for null on the data object before using it, since it could be null if no data was found for the registered name – in that case, you can use the load game function to do default initialization.

Code example

Here’s a small code example on how the custom save data functionality can be used. The example uses a component (MonoBehaviour), but you can also use similar code in other classes.

It’s crucial that the class you register to the save game handler must be alive throughout the entire game, and it’s best if you register it in the same scene where ORK is first initialized with the game starter. Don’t register custom save data in a running game, this will lead to the classes not being registered if you play the game at a later time and want to load a save game.