I’m trying to clean up how shared configuration data is handled in a Unity project and wanted to sanity-check my approach.For things like gameplay tuning values, item definitions, and balance parameters, I’ve seen both of these patterns used:
-
Static data classes with constants or readonly fields
-
ScriptableObjects used as data containers, referenced by systems at runtime
I understand the general benefits of ScriptableObjects (serialization, inspector editing, asset reuse), but I’m less clear on the tradeoffs once a project grows in size — especially around testing, version control, and runtime safety. In practice, when do you consider static data classes the better option, and when do ScriptableObjects clearly scale better?
