ConfigManager - Konfiguration in Unity zentral managen
Darf ich Dich was fragen? Wie konfigurierst Du Dein Spiel? Wir sprechen jetzt einmal nicht über Benutzereinstellungen, sondern über die Konfiguration, die Du selbst am Spiel vornimmst. Wie schnell sich der Spieler bewegt, wieviel Schaden Gegner machen, wie viele Goldmünzen eine Rüstung kostet. Stellst Du das eventuell alles einzeln bei jedem MonoBehaviour ein? Wäre doch super, wenn man das alles einfach zentral speichern könnte. Das geht mit dem ConfigManager.
Eine Konfiguration für alle Fälle
Der ConfigManager funktioniert so: Du hast eine zentral JSON-Datei, in der Du alle konfigurierbaren Werte ablegen kannst. Unterstützt werden dabei zur Zeit: float, string, int, bool, Vector2, Vector3, Vector4, Quartenion, Color und Color32. Die JSON-Datei wird dann beim Spielstart vom ConfigManager geladen und die Werte daraus stehen Dir zur Verfügung. Du kannst dann in jedem MonoBehaviour auf den ConfigManager zugreifen und die Werte laden, die das Skript zum Funktionieren braucht.
Die Datei kann dann zum Beispiel so aussehen:
{
"playerSpeed": 100f,
"enemyDamage": 25f,
"priceArmor": 500
}
Diese Datei kannst Du dann im ConfigManager (über den Unity Editor) referenzieren. Die Werte daraus werden dann geladen und stehen Dir zur Verfügung. Du kannst dann zum Beispiel so darauf zugreifen:
public class Player : MonoBehaviour
{
private float speed;
private void Awake()
{
speed = ConfigManager.service?.Get("playerSpeed", 0f);
}
}
Grundsätzlich funktioniert der ConfigManager dabei genau wie jeder andere StorageManager, denn unter der Haube verwendet er den RuntimeStorageManager zum Bereithalten der Daten.
Ein kleines Manko dabei ist allerdings, dass kein Nesting von Daten möglich ist. Sprich unterstützt wird ein einfaches Key-Value-Objekt. Am besten nutzt Du daher Prefixes, um die Konfiguration übersichtlich zu halten.
Wenn Du mehrere Konfigurationsdateien für verschiedene Zwecke nutzen möchtest, kannst Du auch einfach den ConfigService direkt nutzen und jeweils eine andere Datei laden. Hier kannst Du völlig frei nach eigener Vorliebe und nach der Komplexität des Projektes entscheiden.
Dein Feedback ist wichtig!
Was hältst Du von den hier vorgestellten Services? Fehlt Dir etwas oder funktioniert etwas nicht wie erwartet? Wie immer freue ich mich über Feedback. Lass mich gerne wissen was Du über dieses Modul denkst. Dafür kannst Du zum Beispiel die Kommentarfunktion unter dem Artikel nutzen. Weitere Kontakt-Möglichkeiten findest Du auf hier. Wenn Du einen Bug gefunden hast oder Dir eine Erweiterung wünscht, erstelle bitte einen Issue im GitHub-Repository. Weitere Dokumentation findest Du wie immer in der README des entsprechenden Moduls.
Noch keine Kommentare vorhanden.