Strategies the Unity way
When it comes to adapting the Strategy pattern to Unity, your first instinct may very well be to jump right into MonoBehaviours
.
While this is perfectly fine for the context class, attaching individual concrete strategies as components on a GameObject
and passing them to a context class gets a little messy. That’s not to say you can’t do it that way, but ScriptableObjects shine in this kind of delegation capacity, especially when the strategies need data injected into them from the context and when the strategies have specific data they need to store.
Going the ScriptableObject
route also opens possibilities for in-game testing, emergent design, and creating a variety of strategies as assets that you can drag and drop in the Editor. The starter project already has three characters in the scene, which makes it a perfect fit for applying different behavior strategies at runtime.
Upgrading to ScriptableObjects
In the Scripts folder...