4

I can load a textures with:

Texture2D texture = ContentManager.Load<Texture2D>(assetName);

But this throws an exception if the file doesn't exist. Is there a way to determine if a requested asset of a given name actually exists first?

I'm storing a series of assets using suffixed number counters (art001.png, art002.png, ...) and would like to have a simple call preload the textures by just counting through them.

Nick Gotch
  • 9,167
  • 14
  • 70
  • 97

2 Answers2

7

It is not possible to iterate through the contents of your XAP file. You'll just have to maintain a list of the assets you wish to load.

I had a similar problem with my app, I ended up writing a simple script that looked in a particular folder for a matching filename pattern and updating a text file. So, I'd run the script before building the app, the text file gets packaged and read in the app to determine what files could be loaded. Or you can skip the trouble and maintain a list in code by hand.

Praetorian
  • 106,671
  • 19
  • 240
  • 328
  • That's what I was afraid of. Your idea of a precompile script to populate a file with the directory contents should work fine though. Thanks, I'm going that route. – Nick Gotch Apr 03 '11 at 21:07
  • +1, You can use the Content Pipeline to do lots of interesting things. – jv42 Apr 04 '11 at 08:46
1

You could potentialy use T4. ASP.NET MVC has T4MVC where you use something like:

MVC.Dinners.Views.DinnerForm

instead of:

"DinnerForm"

I'm not sure but it probably uses the T4's code generation on build process. See documentation

Mike
  • 2,995
  • 1
  • 18
  • 14