Using ScriptableObjects to configure the map
ScriptableObjects is a data container created by Unity that can be used to store data and share it across the game, keeping only one instance of the data in memory. Although it has a few limitations – with a lack of dictionary support being one – it is still very flexible, easy to use, and quick to read data. Due to these benefits, it is the recommended way of storing configuration data inside a game, instead of using other data types such as JSON or plain text, for example.
Another great advantage of using ScriptableObjects is that you define the data format as a standard C# class, which makes it quite transparent to read and write data, without having to write code to deal with I/O operations or having to use an external solution.
Here, we are going to create two different ScriptableObjects: one responsible for the game configuration and the other responsible for the level configuration. We will also add a custom editor...