Using scriptableobject as a template (like a normal class instead of a static class)

Is it possible to use a scriptable object like you would use a normal class? Currently all the variables are shared across everything that uses a scriptable object because it acts like a static class.

What i would like is to have the possibility to use it kinda like you use normal classes. You define a template and assign it to the fields that need it. Then when you run the game separate instances are created which do not share their variables.

This would be really useful for generic plugin functionality. For instance you want a generic steeringAI. Then you would want different movement constraints depending if its a vehicle or its infantry. Currently i have to take into account that these constraints are like static classes and thus cannot have a state (unless it doesnt matter if this state is shared).

Guess you could probably do something by having the scriptable object create the instances themselves but this isnt that clean.

Did you figure it out?