No passado, eu usei em Content.Load<type>("filename");
todo o lugar. Isso rapidamente se torna um pesadelo para gerenciar e, pior ainda, você começa a ter várias cópias do mesmo ativo carregadas em vários lugares diferentes.
Depois, passei a usar uma classe Resources, que basicamente se parecia com o seguinte:
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 }
}
Então eu poderia simplesmente usar Resources.particle01
para obter uma referência ao recurso de qualquer lugar dentro do mesmo espaço para nome.
Essa foi uma ótima abordagem, pois eliminou as duplicatas que eu tinha no passado. Além disso, todo o carregamento foi feito em uma única classe, facilitando o controle dos recursos. E, finalmente, eu poderia simplesmente clicar com o botão direito, por exemplo, particle93
e clicar em encontrar todas as referências para encontrar todos os lugares que usavam essa textura.
No entanto, existem problemas com essa abordagem e eu gostaria de saber se existe uma solução melhor por aí.
fonte
Eu uso uma classe estática pública chamada Assets. Ele contém dicionários de cada tipo de ativo, modelo, efeito, aspas de sprite, etc., possui uma função de carregamento, na qual procura na pasta de conteúdo pastas como "Texturas", "Modelos", etc., e carrega todos os ativos. Então, quando eu quero chamar um Asset, apenas uso algo como Assets.Textures ["SpriteSheetX"];
Não sei se isso é uma prática ruim, mas é muito fácil. Na maioria das vezes, passo apenas as strings do nome do arquivo e, no fundo, ele carregará o ativo do Assets.
fonte