6 Stimmen

XNA: Was ist der Sinn von Unload()?

XNA-Spiele haben eine Unload() Methode, bei der der Inhalt entladen werden soll. Aber was ist der Sinn davon? Wenn der gesamte Inhalt entladen wird, dann muss das Spiel beendet werden, in diesem Fall würde sowieso alles in den Müll wandern, oder?

6voto

Martin Punkte 12092

Soweit ich es verstehe, ist es nicht nützlich für alle Standardanwendungen, da, wie Sie sagen, der Garbage Collector die Dinge für Sie erledigt.

Es ist jedoch in vielerlei Hinsicht nützlich, ein Ereignis zu haben, das aufgerufen wird, wenn das Spiel beendet wird. Sie könnten zum Beispiel eine Nachricht an alle Clients in einem Multiplayer-Spiel senden, die ihnen mitteilt, dass Sie das Spiel beenden, und dann können Sie den Garbage Collector Ihre Netzwerkverbindungen beenden lassen.

2voto

Matthew Whited Punkte 21770

Es ist immer höflich, hinter sich aufzuräumen sonst lassen dich die Leute nicht mehr mit ihrem Spielzeug spielen.

Ich vermute, dass Sie damit die Möglichkeit haben, Folgendes zu verschachteln Game Objekte in Ihr Projekt ein und geben Ihnen die Möglichkeit, sie später zu bereinigen. Dies würde eine bessere Wiederverwendung Ihres Codes ermöglichen. Hoffentlich findet ein XNA MPV oder jemand aus dem XNA-Team dies und gibt weitere Einblicke.

1voto

SiN Punkte 3644

Das Entladen ist manchmal notwendig, besonders wenn man mit Bibliotheken arbeitet, die nicht über den Garbage Collector entladen werden. Ein Beispiel ist XACT. Ich erinnere mich, dass ich das Objekt, das für die XACT-Musik verantwortlich ist, im Unload-Ereignis in einem bestimmten Fall zerstören musste, in dem das Objekt nicht durch den GC zerstört wurde... Aber ich habe das eigentliche Szenario vergessen...

Noch wichtiger ist jedoch die UnloadContent-Methode für GameComponent-Klassen anstelle von Game-Klassen. Im Allgemeinen können GameComponent- und DrawableGameComponent-Objekte mehrere Ressourcen nutzen. Wenn das Objekt zerstört wird, müssen Sie sicherstellen, dass alle Ressourcen, die mit dem Objekt verbunden sind, zerstört, freigegeben oder manchmal in den Schwebezustand versetzt werden.

Ich würde vorschlagen, dass Sie es vorerst lassen. Wenn Sie mit der XNA-Entwicklung vorankommen, und für größere Projekte, müssen Sie möglicherweise die Unload-Methode verwenden, und verstehen die bestimmten Fälle, in denen Sie benötigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X