Read Pixels to Texture2D in EditorWindow make unity crash


first, searching very deeply on google, i found only old answers and links provideds on them were not valid anymore, so please dont post another thread in answer before ensure its really ok.

So, here is my problem:

I am trying to make a unity window to uvpaint on some custom meshs, so i need to render a camera to a rendertexture with customshader showing uvs, and then save the rendertexture to a texture2D,

problem is: when doing mytexture.ReadPixels(), the editor freeze for a long time, and then crash.

i understood that it is not that simple to do it,
so i tryed to hack it:

  • doing Application.CaptureScreenshot(“Screenshot.png”); and then retrieve texture is too long, not an option.

  • doing Color tests = UnityEditorInternal.InternalEditorUtility.ReadScreenPixel(, (int)position.width, (int)position.height); after camera.Render()

does not work, it gives me a texture full of red color.

  • trying to put ReadPixels only when Event.repaint does not work too.

Does someone know a way to do it?

i have the same problem!

I tried this example from the Unity Scripting API reference manual:

static public Texture2D GetRTPixels(RenderTexture rt) {

    // Remember currently active render texture
    RenderTexture currentActiveRT =;

    // Set the supplied RenderTexture as the active one = rt;

    // Create a new Texture2D and read the RenderTexture image into it
    Texture2D tex = new Texture2D(rt.width, rt.height);
    tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);

    // Restorie previously active render texture = currentActiveRT;
    return tex;

It is working without crash.