Custom Resources
Custom Resources are a save- and loadable custom created property holder. They are similar to Unity's Scriptable Object class.
It's easy to create one:
extends Resource
class_name MyCustomResource
Then right-click in the FileSystem => New Resource and search for your resource.
Examples
This randomizes the material on an object:
extends Resource
class_name MaterialPicker
export(Array, Material) var materials: Array
func pic_random_mat()