ScriptableObject vs Prefab Variant

After reading tons of posts and blogs i’m still not sure what would be the best way to hadle my situation, i’m working on a tower defense, various towers, projectiles, enemies…
I’m not sure if i should go for ScriptableObjects to store data for the different objects like:

  • Enemies: name, health, speed, abilities, animation, sounds, defense type (enum)…
  • Towers: range, sprite, projectile prefab…
  • Projectiles: speed, damage, sprite…

Currently i’m using ScriptableObjects for enemy stats and prefab variants for the towers, that’s why i’m currently stuck, not sure which one use i don’t want to mix everything without sense.

Thanks in advance!

1 Like

I’d use scriptable objects for data that I’d like to share between multiple objects and prefab variants when I want to have a new prefab that is mostly the same as the base but with a few variations (hence the name). Kinda like subclassing.
There is nothing stopping you from mixing and matching both ideas however. You don’t necessarily need to choose one or the other. They are both there to be used.

1 Like

Thanks guys, you’re right i’m starting to mix both and it looks logical and works goods :slight_smile: