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

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

11

18.05.2013, 23:10

In diesem Fall sollte das Objekt einfach ein Attribut der FrostBomber-Klasse sein und in dem Dispose der FrostBomber-Klasse dann myPlayer disposen:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
class FrostBomber
{
   public override void Dispose( bool disposing )
   {
      if( disposing )
          myPlayer.Dispose();

      base.Dispose( disposing );
   }
}


Dann wird myPlayer mit dem Spiel zusammen Disposed. Früher ist das ja auch nicht sehr sinnvoll, da der Spieler ja meistens während der gesamten Lebensdauer des Spiels ja vorhanden sein sollte.

De_Struktor

unregistriert

12

18.05.2013, 23:20

ja, dann muss Player aber IDisposable implementieren, denn sonst kann ich die Methode knicken^^

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

13

18.05.2013, 23:23

Ja klar.

Wobei man vielleicht noch erwähnen sollte: Das sieht ja nach XNA aus und da lädst du deine Texturen ja über den ContentManager. Dieser disposed schon von sich aus alle Objekte, die er geladen hat, wenn er selbst disposed wird.

De_Struktor

unregistriert

14

18.05.2013, 23:25

mir ist ja auch bewusst, das XNA noch speicherfreundlicher in dem Sinne ist, aber es geht um mich^^ in diesem Fall, denn ich will lernen, speicherorientiert zu entwickeln... selbstverständlich unter starker Berücksichtigungen der anderen Paradigmen :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

19.05.2013, 10:17

Wie ich schon sagte, wichtig ist der Aufruf von Dispose im Destruktor. Die using-Direktive muss man nicht "implementieren", die benutzt von sich aus die Dipose-Methode. Aber das hier z.B. nicht:

C#-Quelltext

1
2
3
void foobar() {
IDisposable obj = new SomeDisposableObj();
}

Hier wird Dispose(); nicht aufgerufen. Der Garbage-Collector macht dies nicht von sich aus. Daher muss in der Finalize-Methode explizit das Dispose aufgerufen werden. Das sollte aber eigentlich auch in der MSDN stehen.
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]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

19.05.2013, 22:27

ja, dann muss Player aber IDisposable implementieren, denn sonst kann ich die Methode knicken^^

Willkommen in der wunderbaren Welt der Garbage Collection, wo jegliches Ressourcenmanagement zum Alptraum wird... ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

19.05.2013, 22:36

Ich wüsste ehrlich gesagt nicht wieso eine Spieler-Klasse disposable sein sollte. Das Teil sollte keine externen unmanaged Ressourcen verwalten.
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]

De_Struktor

unregistriert

18

20.05.2013, 00:14

ist doch einleuchtend, die Spielerklasse beinhaltet doch unmanged Ressourcen!

Texturen...

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

19

20.05.2013, 03:33

Nein tut sie nicht.
Die Texture-Klasse von XNA ist keine unmanaged Resource. Sie ist eine ganz normale Klasse.

Ob diese Klasse intern irgendwelche unmanaged Resources verwendet kannst du als Aufrufer ja gar nicht wissen (ok bei einer Textur ist das klar, aber generell). Braucht dich aber auch gar nicht zu interessieren.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

20.05.2013, 04:41

Die Texture-Klasse von XNA ist keine unmanaged Resource. Sie ist eine ganz normale Klasse.

Das eine schließt das andere ja nicht aus. Soweit ich das aus der Doku sehen kann, ist die XNA Texture, wie zu erwarten, sehr wohl IDisposable... ;)

Werbeanzeige