Where should I store AppSettings configuration data?

I’m trying to determine a best practice for storing configuration settings. I’ve seen 4 ways, and each way I consider unreasonable. But perhaps my understanding is broken. Please let me know if there is a good solution I can use. Here are the considerations I had.

  1. Unity does not appear to have any kind of AppSettings. I.e. like Visual Studio dlls/exes/services might. (PlayerPrefs expressed in #3, it is different.)

  2. Web Player (which the project uses) does not support File IO, to store my own config.xml/config.json type file.

  3. PlayerPrefs appears that it will remain isolated to the local machine. Updating the project does not replace the player prefs, and new variables are supposed to be hardcoded to populate the PlayerPrefs if those variables didn’t already exist. (hard coding is #4)

  4. Hard Coding the values creates a hefty inconvenience, as we push our solutions from Dev to Test to Staging to Prod, we have to make sure to replace a code file (or many). (typically build systems are designed to change config files, not code.) Additionally, once the code was built, we wouldn’t be able to reasonably change the settings to experiment with different servers or other configuration changes.

Is my perspective incorrect about one of the 4 issues above? What other options are there? Any help would be greatly appreciated. Thanks!

Presently I’m leaning towards a Settings class with a dictionary. The settings will attempt to be populated from JSON, and attempt 2 paths. 1) it will try to load from a File IO, to find a JsonSettings.dat file, which works in everything but Web, and 2) it will attempt to send a JS Network message out to the page it is hosted in, to get the JSON settings from it instead, which only works in the web. In either case it is a JSON file, it has 2 locations it needs to live. but that I think might be the best solution at present.