
You might have heard ScriptableObjects being described as “data containers”, but that label doesn’t quite do them justice. Applied correctly, ScriptableObjects can also help you speed up your Unity workflow, reduce memory usage, and simplify your code architecture.
A ScriptableObject is a Unity object that’s not part of a GameObject instance. You can use it to create a custom class with its own variables and methods, but with less overhead than a MonoBehaviour. It does not have a Transform and exists outside of the Scene Hierarchy. Instead, it lives at the project level as an asset, much like a material or 3D model.
This Unity 6 edition of the ScriptableObject e-book assembles tips and tricks from professional developers for deploying ScriptableObjects in production. These include examples of how to apply them to specific design patterns and how to avoid common pitfalls.
Together with the e-book, you can explore the Paddle Ball sample project available for free in the Unity Asset Store. The sample project provides many examples of how ScriptableObjects can help you create components that are testable and scalable, while still being designer-friendly.