Подскажите есть ли возможность сохранить в png изображение какого либо окна сделанного на новом UI 4.6? Может отрендерить в текстуру как то его можно?
Пытался сделать через targetTexture у камеры, но почему то GUI в снимок не попадает. На картинке получается только сцена без GUI.
Application.CaptureScreenshot - нормально работает, но поскольку это нужно в вебке, то не прокатит.
Canvas в режиме Screen Space - Overlay пробовал делать и Screen Space - Camera, но не помогло только при этом начали дрожать мелкие элементы.
Синтаксис:
Используется csharp
public void TakeScreen()
{
StartCoroutine(CaptureScreen());
}
public IEnumerator CaptureScreen()
{
// Wait for screen rendering to complete
yield return new WaitForEndOfFrame();
RenderTexture rt = new RenderTexture (1000, 700, 24);
cam.targetTexture = rt;
Texture2D screenShot = new Texture2D (1000, 700, TextureFormat.RGB24, false);
cam.Render ();
RenderTexture.active = rt;
screenShot.ReadPixels (new Rect (0, 0, 1000, 700), 0, 0);
cam.targetTexture = null;
RenderTexture.active = null; // JC: added to avoid errors
Destroy (rt);
byte[] pngData = screenShot.EncodeToPNG ();
Debug.Log ("ОК");
}
{
StartCoroutine(CaptureScreen());
}
public IEnumerator CaptureScreen()
{
// Wait for screen rendering to complete
yield return new WaitForEndOfFrame();
RenderTexture rt = new RenderTexture (1000, 700, 24);
cam.targetTexture = rt;
Texture2D screenShot = new Texture2D (1000, 700, TextureFormat.RGB24, false);
cam.Render ();
RenderTexture.active = rt;
screenShot.ReadPixels (new Rect (0, 0, 1000, 700), 0, 0);
cam.targetTexture = null;
RenderTexture.active = null; // JC: added to avoid errors
Destroy (rt);
byte[] pngData = screenShot.EncodeToPNG ();
Debug.Log ("ОК");
}
Подскажите куда копать? Почему GUI может не рендериться в текстуру?