Du bist nicht angemeldet.

Werbeanzeige

11

02.01.2015, 22:22

Das ist richtig, aber bisher habe ich das so organisiert, dass alle Ressourcen erst deklariert werden, aber noch nicht geladen sind. Wird eine Ressource geladen, holt man sich vom Manager die Referenz, und lädt sie dann via einer Methode load(). Dadurch wird auch der Ressource-Manager benachrichtigt. D.h. aber, dass das Material diese Referenz von dem Manager braucht, wofür es den Resource-Manager braucht.

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

02.01.2015, 22:28

Vergiss, dass es "friend" gibt. Wann immer Du meinst, dass Du's brauchst, liegst Du falsch. Du erzeugst da nur eine unnötige Abhängigkeit, die am Ende sogar im Kreis verläuft. Viele Design-Fehler lassen sich schon vermeiden, indem man Zyklen vermeidet.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

13

02.01.2015, 22:33

Das heißt, ich sollte entweder öffentliche Getter machen, oder die Manager weitergeben. Da stimme ich für die Getter.

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

02.01.2015, 22:46

Wie genau löst das die zyklische Abhängigkeit? Sorry, aber ich blicke gerade nicht, was Du da jetzt genau bauen willst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

15

02.01.2015, 22:49

Ich wollte eigentlich nur wissen, ob ich die ShaderManager und TextureManager - Zeiger jetzt auch an die Materialien weiterleiten soll, oder ob ich sie via Getter beim Material Manager exponieren sollte. Wo jetzt Zyklen sind, weiß ich gerade auch nicht. ?(

dot

Supermoderator

Beiträge: 9 833

Wohnort: Graz

  • Private Nachricht senden

16

02.01.2015, 22:53

Mir ist nicht ganz klar, wieso das Material nicht einfach Referenzen auf die fertig geladenen Ressourcen bekommen kann...

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

02.01.2015, 23:06

Mir auch nicht. Materials sollten überhaupt nicht wissen, dass es einen Manager für sie gibt. Genau da wäre dann auch der Zyklus: MaterialManager kennt Materialen und Materialen wissen, dass es einen MaterialManager gibt. Das ist Unsinn. Ein Material braucht auch keine anderen Manager zu kennen, denn es bekommt im Konstruktor genau die Dinge übergeben, die es braucht. Es braucht keine Manager, es braucht offenbar Texturen und Shader.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

18

02.01.2015, 23:12

Das mit den fertig geladenen Referenzen wäre an sich möglich, aber jede Ressource, auch Materialien können geladen und gelöscht werden, ohne dass ihre eigentlich Instanz gelöscht wird via load() oder unload(). Ein Material lädt sich dann selbst aus einer Datei und setzt seinen internen Status auf "Geladen". Während es sich also lädt, muss es Zugriff auf die beiden anderen Manager bekommen, um die entsprechenden Sahder / Texturen zu laden.

19

02.01.2015, 23:18

Plane ich zumindest für Audio-Dateien wie Hintergrundstücke. Zum Start des Spiels werden einige Konfigurationsdateien geladen, die den Managern alle Ressourcen bekanntmachen. Die instanziieren dann alle Ressourcen, und setzen deren internen Status auf "Nicht Geladen". Wenn nun eine Ressource angefordert wird, so wird eine Methode aufgerufen, mit der sich die Ressource selbst lädt, dann ihren Status auf "Geladen" setzt, und dann die Kontrolle zurückgibt. Das heißt also, dass die Ressourcen irgendeinen Weg brauchen, um auf unterliegende Ressourcen zuzugreifen.

Sacaldur

Community-Fossil

Beiträge: 2 326

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

20

03.01.2015, 02:53

Für das Laden der Ressourcen sind ja die Manager verantwortlich und auch wenn das Laden asynchron durchgeführt werden soll, bleibt das eine Aufgabe der Manager und sollte von diesen durchgeführt werden. Genauso sollten bei einem Asynchronen Laden die Manager dafür sorgen, dass interessierte Stellen über Statusänderungen informiert werden.
Und es wurde bereits geschrieben: das Material sollte keine Referenz auf irgendwelche Manager haben.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige