Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Subsampling

Frischling

  • »Subsampling« ist der Autor dieses Themas

Beiträge: 39

Beruf: Anwendungsentwickler - Azubi

  • Private Nachricht senden

11

03.08.2017, 12:50

Hallo Renegade,

vielen Dank für die Antwort.

Lohnt es sich dann überhaupt noch großartig was mit ScriptableObjects zu machen?
Im Endeffekt muss man sich ja erstmal im klaren sein wie Unity alles serialisiert. Danach muss man sich seine Objekt Hierarchie anschauen und ggfs. bzw. eigentlich immer (wenn man OOP voll ausnutzen will) sein eigenes Süppchen kochen bspw. mithilfe des ISerializationCallbackReceiver bevor/nachdem Unity serialisiert /hat, seine Daten nochmals durch eigene Logik aufbereiten.

Da macht es wohl in meinen Augen mehr Sinn gleich selbst alles in die Hand zu nehmen, anstatt sich da mit Ach und Krach was zusammen zu "hacken".

Oder wie siehst du das ?

Grüße

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

12

03.08.2017, 22:16

Die von mir geschilderte Variante ist, wie bereits erwähnt, ohne ScriptableObjects und lediglich die Standardvorgehensweise für das serialisieren mittels JSON von plain classes. JSON Blobs für das Backend sind heutzutage nicht ungewöhnlich und werden, aufgrund der Verbreitung von JSON, häufig genutzt (Stichwort NoSQL). Dafür musst du dir auch nicht im Klaren sein was bei Unity besonderes abgeht (Zumal das Serializable Attribut im System Namespace ist und du auch jeden ander JSON Library verwenden kannst die dir gefällt z.B. Json.NET), da du im Endeffekt nur Values serialisierst. Gerade wenn es um jede Art von Ressourcen geht empfehle ich die Pfade zu den Assets zu serialisieren. Alles weitere ist keine Magie und nur eine Frage wie du deine Datenstrukturen aufbauen möchtest. Diese Variante findest du ebenfalls auch in großen bekannten Projekten die mit Unity umgesetzt werden - insbesondere die dazugehörige Anpassung mittels Custom Windows und Propertie Drawern für die einfachere Bedienung.
Liebe Grüße,
René

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Renegade« (03.08.2017, 22:22)


Subsampling

Frischling

  • »Subsampling« ist der Autor dieses Themas

Beiträge: 39

Beruf: Anwendungsentwickler - Azubi

  • Private Nachricht senden

13

03.08.2017, 22:55

Ich hatte deine letzte Variante schon verstanden, mein Post war auch nicht darauf bezogen sondern auf das Arbeiten mit den ScriptableObjects.
Aber habe jetzt genug Input um mir mein System aufzubauen.

Vielen Dank !

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

14

03.08.2017, 23:18

Sie haben schon ihre Daseinsberechtigung. Viele Benutzer verwenden MonoBehaviours falsch indem sie Daten wie z.B. das maximale Leben einer Einheit auf jeder Instanz speichern, obwohl dieses sich nicht verändert oder für alle Einheiten gleich bleibt. Genau hier greift die sinnvolle Verwendung von ScriptableObjects. Auch die leichte Austauschbarkeit und die Möglichkeit verschiedene Versionen von Konfigurationen zu erstellen macht Sinn. Dabei ist die Serialisierbarkeit dann vielleicht doch nur ein nettes Plus und nicht das Ausschlaggebende Feature. Die Doku sagt ja auch lediglich dazu: A class [ScriptableObject] you can derive from if you want to create objects that don't need to be attached to game objects.
Liebe Grüße,
René

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

04.08.2017, 10:10

Gerade wenn es um jede Art von Ressourcen geht empfehle ich die Pfade zu den Assets zu serialisieren.

Was meinst du damit genau?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

16

07.08.2017, 14:31

Hallo Schorsch,

Was meinst du damit genau?

Unity kennt einen speziellen Resources Ordner im Projektverzeichnis von dem es möglich ist Ressourcen jeder Art, sei es Texturen oder Prefabs, via der statischen Methode Resources.Load zu laden. Dafür muss man einen Pfad angeben wo sich das Asset innerhalb des Ressources Ordners befindet. Diesen Pfad würde ich dann ebenfalls mit in die JSON serialisieren, wenn für das Item ein Icon oder andere anzeigbare Elemente geladen werden müssen.
Liebe Grüße,
René

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

17

07.08.2017, 16:40

Unity kennt einen speziellen Resources Ordner im Projektverzeichnis von dem es möglich ist Ressourcen jeder Art, sei es Texturen oder Prefabs, via der statischen Methode Resources.Load zu laden. Dafür muss man einen Pfad angeben wo sich das Asset innerhalb des Ressources Ordners befindet. Diesen Pfad würde ich dann ebenfalls mit in die JSON serialisieren, wenn für das Item ein Icon oder andere anzeigbare Elemente geladen werden müssen.

Damit kann ich etwas anfangen :) Habe Unity selbst schon benutzt, ist aber einige Zeit her. Danke für die Aufklärung.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige