Awesome Accessories

Ich beschäftige mich schon seit einigen Jahren mit Unity und der Spieleentwicklung. Im Laufe der Jahre habe ich viele Lösungen für Probleme gefunden, mit denen man als Spieleentwickler unweigerlich konfrontiert wird. Wo speichere ich die Benutzereinstellungen? Wie gehe ich mit Übersetzungen um? Wie kann ich Sounds einfach abspielen, ohne jedes Mal eine eigene Lösung schreiben zu müssen? Für all diese Probleme und mehr habe ich im Laufe der Zeit Lösungen gefunden und sie in all meinen Projekten eingesetzt. Und ich möchte diese Lösungen gerne mit Euch teilen.

Dieses Unity-Paket enthält all diese kleinen Helferlein, Dienste und Zeitersparnisse. Das Paket ist auf Github verfügbar und wird (vielleicht) später im Unity Asset Store veröffentlicht. Es wird immer Open Source sein und steht unter der MIT-Lizenz. Es enthält Lösungen für UI-Sounds, Konfigurationsmanagement, Szenen laden, Event-Management, Benutzereinstellungen, Datenspeicherung, Übersetzungen und vieles mehr.

Diese maßgeschneiderten Lösungen haben mein Leben als Spieleentwickler über Jahre hinweg erleichtert, und ich hoffe, dass sie auch Euch helfen werden. Ich freue mich auf Euer Feedback.

Jetzt verfügbar

Kernkonzepte

Um diese Sammlung von Hilfsprogrammen leichter zugänglich zu machen, habe ich einige Kernkonzepte definiert, an die ich mich bei der Entwicklung dieses Pakets gehalten habe.

Managers

Die Manager sind das Herzstück dieses Pakets. Sie sind für die Verwaltung eines bestimmten Problembereichs zuständig, wie z.B. der AudioManager für die Handhabung der Audiowiedergabe oder der TranslationManager für die Handhabung von Übersetzungen. Alle Manager sind Scriptable Objects und können zu jedem Behaviour in Ihrem Projekt hinzugefügt werden. Du kannst mehrere Instanzen eines Managers erstellen, aber es sollte nur eine Instanz eines Managers pro Behaviour geben.

Behaviours

Behaviours sind das Herzstück von Unity. Sie sind die Bausteine eines jeden Spiels oder einer Anwendung. Dieses Paket bietet eine Reihe von Behaviours, die verwendet werden können, um die Funktionalität der in Unity eingebauten Behaviours zu erweitern. Zum Beispiel kann PlayGlobalSound verwendet werden, um Audioclips auf eine bequemere Weise abzuspielen.

Kommunikation & Delegates

Manager und Behaviours kommunizieren über Delegates miteinander. Dies ermöglicht eine entkoppelte Architektur und macht es einfacher, die Funktionalität des Pakets zu erweitern.

Services

Services werden verwendet, um zusätzliche Funktionen bereitzustellen, die von bestimmten Managern oder Behaviours genutzt werden. Der FilesService wird zum Beispiel zum Lesen und Schreiben von Dateien im Dateisystem verwendet. Du musst Dienste manuelle in dem jeweiligen Manager oder Behaviour instanzieren, in dem Du sie verwenden möchtest.

Module

Der AudioManager dient der Verwaltung von Audioquellen und Lautstärken innerhalb eines Unity-Projekts. Er ermöglicht die Steuerung von Musik, Soundeffekten und Sprache separat mit individuellen Lautstärkereglern sowie einem Master-Lautstärkeregler, der alle Audioquellen beeinflusst. Die Klasse enthält Funktionen zum Abspielen, Stoppen und Überprüfen, ob Audio abgespielt wird. Außerdem bietet sie angepasste Lautstärkeeigenschaften, die sowohl die individuelle als auch die Gesamtlautstärke berücksichtigen.

Der AudioManager dient der Verwaltung von Audioquellen und Lautstärken innerhalb eines Unity-Projekts. Er ermöglicht die Steuerung von Musik, Soundeffekten und Sprache separat mit individuellen Lautstärkereglern sowie einem Master-Lautstärkeregler, der alle Audioquellen beeinflusst. Die Klasse enthält Funktionen zum Abspielen, Stoppen und Überprüfen, ob Audio abgespielt wird. Außerdem bietet sie angepasste Lautstärkeeigenschaften, die sowohl die individuelle als auch die Gesamtlautstärke berücksichtigen.

Der ConfigManager dient der Verwaltung von Konfigurationseinstellungen für ein Unity-Projekt. Er lädt Konfigurationsdaten aus einer angegebenen JSON-Datei und speichert die Daten in einem Laufzeit-Cache. Die Klasse unterstützt eine Vielzahl von Datentypen, darunter Primitive, Vector2, Vector3, Quaternion und Farbe. Sie enthält auch Funktionen zum Löschen des Caches und zum Abrufen gespeicherter Werte.

Der ConfigManager dient der Verwaltung von Konfigurationseinstellungen für ein Unity-Projekt. Er lädt Konfigurationsdaten aus einer angegebenen JSON-Datei und speichert die Daten in einem Laufzeit-Cache. Die Klasse unterstützt eine Vielzahl von Datentypen, darunter Primitive, Vector2, Vector3, Quaternion und Farbe. Sie enthält auch Funktionen zum Löschen des Caches und zum Abrufen gespeicherter Werte.

Der ScenesManager wurde entwickelt, um Szenenoperationen wie das Laden, Verlassen und Wechseln zwischen Szenen in einem Unity-Projekt zu verwalten. Er ermöglicht das asynchrone Laden und Entladen von Szenen mit Unterstützung für additive Szenen. Die Klasse stellt außerdem Events für Szenenoperationen bereit, die benutzerdefinierte Verhaltensweisen bei Szenenübergängen ermöglichen.

Der ScenesManager wurde entwickelt, um Szenenoperationen wie das Laden, Verlassen und Wechseln zwischen Szenen in einem Unity-Projekt zu verwalten. Er ermöglicht das asynchrone Laden und Entladen von Szenen mit Unterstützung für additive Szenen. Die Klasse stellt außerdem Events für Szenenoperationen bereit, die benutzerdefinierte Verhaltensweisen bei Szenenübergängen ermöglichen.

Der ScreenshotManager erleichtert die Erfassung und Speicherung von Screenshots innerhalb eines Unity-Projekts. Er ermöglicht die Anpassung des Speicherverzeichnisses und enthält eine optionale Debug-Protokollierung. Diese Klasse verwendet eine Coroutine, um Screenshots am Ende des aktuellen Frames zu erfassen und sicherzustellen, dass das erfasste Bild die vollständig gerenderte Szene darstellt.

Der ScreenshotManager erleichtert die Erfassung und Speicherung von Screenshots innerhalb eines Unity-Projekts. Er ermöglicht die Anpassung des Speicherverzeichnisses und enthält eine optionale Debug-Protokollierung. Diese Klasse verwendet eine Coroutine, um Screenshots am Ende des aktuellen Frames zu erfassen und sicherzustellen, dass das erfasste Bild die vollständig gerenderte Szene darstellt.

Der SettingsManager erleichtert die Verwaltung von Anwendungseinstellungen innerhalb eines Unity-Projekts. Er bietet eine Struktur für das Laden, Speichern und den Zugriff auf Einstellungsdaten durch einen anpassbaren Einstellungstreiber. Die Klasse löst Events bei wichtigen Vorgängen wie Laden, Speichern, Änderungen und Fehlern aus und ermöglicht so eine reaktionsschnelle und dynamische Verwaltung der Einstellungen.

Der SettingsManager erleichtert die Verwaltung von Anwendungseinstellungen innerhalb eines Unity-Projekts. Er bietet eine Struktur für das Laden, Speichern und den Zugriff auf Einstellungsdaten durch einen anpassbaren Einstellungstreiber. Die Klasse löst Events bei wichtigen Vorgängen wie Laden, Speichern, Änderungen und Fehlern aus und ermöglicht so eine reaktionsschnelle und dynamische Verwaltung der Einstellungen.

Der TranslationsManager wurde entwickelt, um die Verwaltung von Übersetzungen innerhalb einer Unity-Anwendung zu erleichtern und die Infrastruktur für die Unterstützung mehrerer Sprachen bereitzustellen. Er ermöglicht einen dynamischen Sprachwechsel, unterstützt das Abrufen von übersetzten Strings und verwaltet den aktiven Übersetzungssatz.

Der TranslationsManager wurde entwickelt, um die Verwaltung von Übersetzungen innerhalb einer Unity-Anwendung zu erleichtern und die Infrastruktur für die Unterstützung mehrerer Sprachen bereitzustellen. Er ermöglicht einen dynamischen Sprachwechsel, unterstützt das Abrufen von übersetzten Strings und verwaltet den aktiven Übersetzungssatz.

Der WebRequestService bietet eine flexible und bequeme Möglichkeit, Webanfragen innerhalb von Unity-Anwendungen zu bearbeiten. Er unterstützt GET-, POST- und andere HTTP-Methoden, anpassbare Timeouts, Debugging-Optionen und Callbacks für Erfolgs- und Fehlerszenarien.

Der WebRequestService bietet eine flexible und bequeme Möglichkeit, Webanfragen innerhalb von Unity-Anwendungen zu bearbeiten. Er unterstützt GET-, POST- und andere HTTP-Methoden, anpassbare Timeouts, Debugging-Optionen und Callbacks für Erfolgs- und Fehlerszenarien.

Unterstütze das Projekt

Wenn du dieses Projekt hilfreich findest und zu seiner Entwicklung und laufenden Pflege beitragen möchtest, würde ich mich über deine Unterstützung sehr freuen. Mit einer Spende kannst du dazu beitragen, die Nachhaltigkeit des Projekts zu sichern und es mir zu ermöglichen, mehr Zeit und Ressourcen für seine Verbesserung aufzuwenden.

Wie kannst du beitragen?

  • Finanzielle Beiträge: Wenn du eine Geldspende machen möchtest, kannst du das sicher über PayPal tun. Jeder Beitrag, egal in welcher Höhe, macht einen Unterschied und wird sehr geschätzt.

  • Fehlerberichte und Feature Requests: Wenn du bei der Nutzung des Projekts auf Probleme stößt oder Ideen für neue Funktionen hast, öffne bitte einen Eintrag im GitHub-Repository. Dein Feedback und deine Vorschläge sind wichtig, um das Projekt für alle zu verbessern.

  • Code-Beiträge: Wenn du ein Entwickler bist und direkt zur Codebasis des Projekts beitragen möchtest, kannst du einen Pull Request einreichen. Beiträge jeder Größenordnung sind willkommen und werden gewürdigt.

Dein Beitrag zählt, egal in welcher Form!

Auch wenn du dich nicht finanziell oder mit Code beteiligen kannst, gibt es andere Möglichkeiten, deine Unterstützung zu zeigen:

  • Stare das Projekt auf GitHub. Das erhöht die Sichtbarkeit des Projekts und zieht mehr Nutzer an.

  • Teile das Projekt mit anderen. Verbreite die Nachricht über das Projekt und hilf ihm, ein größeres Publikum zu erreichen.

Deine Unterstützung bedeutet mir sehr viel und motiviert mich, weiter an diesem Projekt zu arbeiten und es zu verbessern. Danke, dass du über eine Spende nachdenkst und die Entwicklung des Projekts unterstützt!

Support

Dieses Package sollte in allen derzeit unterstützten Unity-Versionen funktionieren. Wenn Du Fragen hast oder Hilfe mit dem Paket benötigst, tritt dem Discord-Server bei oder erstelle einen Issue bei GitHub.

Lizenz

MIT Lizenz, Copyright (c) 2023 Christian Hanne