Hay al menos 3 ways para guardar algún tipo de pantalla con Unity3D: Application.CaptureScreenshot
, Texture2D.ReadPixels
y RenderTexture
.
Solo conozco la primera: Application.CaptureScreenshot
. Es seguro el más simple. No toma caminos y se guardará en Application.persistentDataPath
o Application.dataPath + "/../"
, dependiendo de su plataforma. Desafortunadamente, actualmente no hay forma de saberlo con certeza o solo a través del código: simplemente se ha roto de esa manera. Además, es lento y puede llevar algunos segundos procesarlo. Se ejecuta como un proceso separado, por lo que debe tener una Actualización o una Corutina esperando a que se cree el archivo antes de usarlo para nada.
Si desea elegir donde se guardará el archivo con ella, tiene que hacer algo como esto:
bool creatingFile = false;
string fileName = "Screenshot.png"
function Update() {
if(Input.GetMouseButtonDown(0)) {
Application.CaptureScreenshot(fileName);
creatingFile = true;
}
if (creatingFile) {
string origin = System.IO.Path.Combine(Application.persistentDataPath, fileName);
string destination = "/sdcard/ScreenCapture/" + fileName; // could be anything
if (System.IO.File.Exists(origin)) {
System.IO.File.Move(origin, destination);
creatingFile = false;
}
}
}
La etiqueta de la unidad es la unidad para Microsoft. Por favor no lo use mal. –
¿Encontró una solución para este problema? – Sona