Store large amount of Initial Data,Unity Data Storage for large amount of initial data

Hello everyone,

First, i want to apology if my english is rusty/bad and if this question as already been answered, i didn’t find any answer.

I was curious to know how you could store à lot of initial data in Unity, for example for a pokemon-like rpg game. Every pokémon should be listed, the encounter randomized depending on area etc…
I tried to do a SQLite database (because i like to use database traditionnaly) but after building the project and playing it, the database is not saved with the project.

How can you achieve that ? Do you create every asset for each creature you can catch and you preset each zone with encouter with these creatures ? The more i use Unity, the more i think it is the way to go (and not necessary bad, i’m thought games used some way of local database for items for example).

Thanks in advance, and again sorry if it’s innapropriate in some ways.

You could use ScriptableObjects. They can’t be changed after the build, but are easy interchangeable data containers while developing.
Example:

// create a menu entry
[CreateAssetMenu(fileName="New PokemonData", menuName="Custom/PokemonData")]
class PokemonData : ScriptableObject
{
    public int power;
    public string name;
}

With the above script in your Assets folder, you can create an instance of your ScriptableObject by navigating to Assets > Create > Custom > PokemonData.

Then you can use them in your normal scripts like so:

public class Spawner : MonoBehaviour
{
    // An instance of the ScriptableObject defined above.
    public PokemonData data;
}

See Unity Learn or the manual for further reference.