Changing a Scriptable Object's Variables without effecting other instances.

You can use ScriptableObject.CreateInstance<>(); to create an instance to use.

It’s not optimal however, as you are conflating the idea of ScriptableObjects (authored when making the game) with runtime data.

I actually just wrote a big post about it here: