x


"Too many files open" while working with textures

I've got a portion of one of my scripts that iterates through the textures in a scene and writes them out to disk as PNGs. The code to write out the texture is as follows:

// Mark the texture as readable
TextureImporter textureImporter = (TextureImporter)AssetImporter.GetAtPath(assetPath);   
textureImporter.isReadable = true;
AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate);

// Reload the texture after the readable settings have been changed
Texture2D texture = AssetDatabase.LoadAssetAtPath(assetPath, typeof(Texture2D)) as Texture2D;

// Force the texture into a usable format (ARGB32)
Texture2D pngTexture = new Texture2D(texture.width, texture.height);
pngTexture.SetPixels(texture.GetPixels());

Byte[] bytes = pngTexture.EncodeToPNG();
using (FileStream stream = new FileStream(outputPath, FileMode.Create)) 
{
    stream.Write(bytes, 0, bytes.Length);
    stream.Close();
}

// Clean up the temp texture
DestroyImmediate(pngTexture);

After doing this on only a few textures (I don't know the exact count but it seems pretty low) the script will stop dead and the console displays "Too many files open". After this point, Unity becomes pretty useless and you have to restart to get things back to normal.

This is fairly confusing to me, since I'm taking great care to close any file handles I explicitly open. Really, I shouldn't even need the stream.Close, as the using statement will dispose of the resource anyway. I could understand if the AssetDatabase functions (like LoadAssetAtPath) opened a file handle, but I'm at a complete loss as to how to close said handle if that's the case. Is there something more that I need to be doing to clean up after loading assets, or is Mono just failing to handle files correctly?

Mac OSX 10.6, Unity 3.4 if it matters.

more ▼

asked Nov 19 at 09:13 PM

Toji\'s gravatar image

Toji
31 1 3 4

(comments are locked)
10|3000 characters needed characters left
 moderation talk

0 answers:
Be the first one to answer this question!
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3126
x1285
x48

Asked: Nov 19 at 09:13 PM

Seen: 449 times

Last Updated: Nov 19 at 09:13 PM

powered by Qato - Enterprise Q&A