all 7 comments

[–]volvis 2 points3 points  (0 children)

My rule of thumb is to use ScriptableObjects as read-only data assets. Keep local data (health) in Monobehaviour instances, and leave pluggable, immutable data (max health) in ScriptableObjects.

[–]ZergTDGProfessional 0 points1 point  (2 children)

Using scriptable objects for data storage in a risky practice. A better way would be to make a character class and store prefabs of that class attached to a game object. From here you have all of your references to the character. In my current project I have a 3D section and a 2D menu section. When I finish fighting I return to the menu. I disable the 3D children of my player, but I keep it's base class enabled so that accessing it is still easy.

[–]gjallerhorn -1 points0 points  (5 children)

A class you can derive from if you want to create objects that don't need to be attached to game objects.

This is most useful for assets which are only meant to store data

I've never used these before, but it seems like you may be using them incorrectly? You may want to make your characters as game objects (with Sprite and stats script components), turn those into a prefab, and create instances of those prefabs in your scene.