In der Vergangenheit habe ich Content.Load<type>("filename");
überall verwendet . Dies wird schnell zu einem Albtraum und schlimmer noch, wenn Sie mehrere Kopien desselben Assets an verschiedenen Orten laden.
Dann habe ich eine Resources-Klasse verwendet, die im Grunde wie folgt aussah:
public class Resources
{
public static Texture2D particle01;
...
public static Texture2D particle93;
public static Effect shader01;
...
public static Effect shader32;
public static Load(ContentManager content, GraphicsDevice device)
{ //load all the resources }
public static Unload()
{ //unload all the resources }
}
Dann könnte ich einfach verwenden Resources.particle01
, um von überall im selben Namespace einen Verweis auf die Ressource zu erhalten.
Dies war ein guter Ansatz, da dadurch die Duplikate beseitigt wurden, die ich in der Vergangenheit hatte. Außerdem wurde das gesamte Laden in einer einzigen Klasse durchgeführt, sodass die Ressourcen leicht im Auge behalten werden konnten. Und schließlich könnte ich zum Beispiel einfach mit der rechten Maustaste klicken particle93
und auf Alle Referenzen suchen klicken, um alle Stellen zu finden, an denen diese Textur verwendet wurde.
Es gibt jedoch Probleme mit diesem Ansatz und ich würde gerne wissen, ob es da draußen eine bessere Lösung gibt.
quelle
Ich benutze eine öffentliche statische Klasse namens Assets. Es enthält Wörterbücher für jede Art von Asset, Modell, Effekt, Spritefonts usw., verfügt über eine Ladefunktion, in der im Inhaltsordner nach Ordnern wie "Texturen", "Modellen" usw. gesucht und alle Assets geladen werden. Wenn ich dann ein Asset aufrufen möchte, verwende ich einfach so etwas wie Assets.Textures ["SpriteSheetX"];
Ich weiß nicht, ob dies eine schlechte Praxis ist, aber es ist sehr einfach. Ich gebe meistens nur Zeichenfolgen des Dateinamens weiter und tief im Kern wird das Asset aus Assets geladen.
quelle