This should be a pretty simple question. I think the documentation is pretty vague on this point, and only states that ScriptableObjects can be used when you “want to create objects that don’t need to be attached to game objects.”
Okay, so far so good. But how exactly does that make a ScriptableObject any different from any other class I define, and then instantiate objects of with the new keyword? Those are also pretty much “objects that don’t need to be attached to game objects”.
I understand that with ScriptableObject, I get access to inherited methods such as UnityEngine.Object’s Destroy and DestroyImmediate, but what exactly do I gain from Destroy()'ing something as opposed to just setting its reference to null, and then letting the GC clean it up?
I’ve been defining and using lots and lots of my own classes and creating instances of them with the new-keyword all along, like any other programmer who’s been trained outside Unity. But when I create a class, should I actually be inheriting from ScriptableObject all the time, and should I always be using Destroy when I want to release memory? I get this cold feeling running down my back that there’s something here that it’s seriously about time I understand right. >_<
Can anyone describe some examples where you’ve used ScriptableObject, and explain to what end?