unity pantalla capturar c# unity3d screenshot

c# - Error de captura de pantalla de Unity: capturar también el editor



capturar pantalla en huawei p8 (1)

Intento crear algunas capturas de pantalla, pero ScreenCapture.CaptureScreenshot realmente captura todo el editor y no solo la vista del juego.

public class ScreenShotTaker : MonoBehaviour { public KeyCode takeScreenshotKey = KeyCode.S; public int screenshotCount = 0; private void Update() { if (Input.GetKeyDown(takeScreenshotKey)) { ScreenCapture.CaptureScreenshot("Screenshots/" + "_" + screenshotCount + "_"+ Screen.width + "X" + Screen.height + "" + ".png"); Debug.Log("Screenshot taken."); } } }

¿Cual podría ser el problema? ¿Cómo tomar una captura de pantalla decente, vista de juego solo que incluye la interfaz de usuario?

Tenga en cuenta lo de la interfaz de usuario, encontré otros métodos en línea para tomar una captura de pantalla (usando RenderTextures ) pero esos no incluían la interfaz de usuario. En mi otro proyecto, "real", también tengo UI, acabo de abrir este proyecto de prueba para ver si el problema de captura de pantalla persiste aquí también.


Este es un error y te sugiero que te mantengas alejado de él por un tiempo hasta que ScreenCapture.CaptureScreenshot sea ​​lo suficientemente maduro. Esta función se agregó en Unity 2017.2 beta, por lo que este es el momento adecuado para solicitar un informe de errores del Editor. Para empeorar las cosas, solo guarda imágenes en blanco y negro en mi computadora.

En cuanto a tomar capturas de pantalla, hay otras formas de hacerlo sin RenderTextures, que también incluirá la interfaz de usuario en la captura de pantalla.

Puede leer píxeles de la pantalla con Texture2D.ReadPixels luego guardarlos con File.WriteAllBytes .

public KeyCode takeScreenshotKey = KeyCode.S; public int screenshotCount = 0; private void Update() { if (Input.GetKeyDown(takeScreenshotKey)) { StartCoroutine(captureScreenshot()); } } IEnumerator captureScreenshot() { yield return new WaitForEndOfFrame(); string path = "Screenshots/" + "_" + screenshotCount + "_" + Screen.width + "X" + Screen.height + "" + ".png"; Texture2D screenImage = new Texture2D(Screen.width, Screen.height); //Get Image from screen screenImage.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0); screenImage.Apply(); //Convert to png byte[] imageBytes = screenImage.EncodeToPNG(); //Save image to file System.IO.File.WriteAllBytes(path, imageBytes); }