Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Capturar pantalla y guardarlo en SD

Iniciado por yugosama, Octubre 23, 2013, 12:26:41 PM

Tema anterior - Siguiente tema
saludos comunidad unity en español, tengo una pequeña-gran duda acerca de como capturar (mas bien guardar lo capturado) un pantallazo en android

resultase que despues de mucho buscar di con la funcion Application.CaptureScreenshot()( que basicamente me captura la pantalla de la aplicacion desde unity y lo guarda donde yo le indique.

en windows no hay ningun problema, pero el detalle surge a trasladar el proyecto a android. no encuentro donde guarda las imagenes, he intentado con Application.persistentDataPath o direcciones mas especificas como /mnt/sdcard/ y nada
algun consejo??

Según dice acá:

http://docs.unity3d.com/Documentation/ScriptReference/Application.CaptureScreenshot.html

Eso te sirve para capturar la pantalla, y además si sólo le das un nombre de archivo automáticamente le agregará el persistent data path, que generalmente es la SD:

http://docs.unity3d.com/Documentation/ScriptReference/Application-persistentDataPath.html

Haz la prueba.

pero el persistentDataPath es accesible desde algun administrador de archivos????  porque yo trate de visualizar esa carpeta desde el astro (un administrador de archivos muy po***r en android) y nunca pude.... o solo es accesible si el aparato esta rooteado?

saludo. ya he podido resolver el problema: en las opciones del player, bajo la seccion de android, el acceso a escritura lo tengo que marcar como externo y ya permite guardar las acapturas de pantalla.

siguiendo los consejos de marcoantap guarde el archivo sin marcarle una ruta espeficica y lo guarda en /mnt/local/Android/data/com.unity3d.player/files .... estaba seguro que el persistentDataPath era otra ruta pero me funciona asi para lo que necesito de momento...

y por si a alguien se pudiera servir posteo el codigo de la captura de pantalla:



#pragma strict

//var name1 = System.Guid.NewGuid().ToString();
var datacion : String;
var SonBoton1 : AudioClip;
var MarcaDeAgua : GameObject;
private var ActivarBoton1 : boolean = true;



function LateUpdate(){
MarcaDeAgua.SetActive(!ActivarBoton1);
}

function OnGUI(){
if (ActivarBoton1){
   //GUI.Label (Rect (0,0,500,70), Application.persistentDataPath);
   if (GUI.Button (Rect (20,40,180,120), "SnapShot!")) {
   FotoFoto();
   }
}
}

function FotoFoto(){
ActivarBoton1 = false;
datacion = System.DateTime.Now.ToFileTime().ToString();

Application.CaptureScreenshot(datacion +".png"); //EXCLUSIVO ANDROID!!!!!

audio.clip = SonBoton1;
audio.Play();
yield WaitForSeconds(SonBoton1.length);
ActivarBoton1 = true;
}




¿Que diablos es esto? se preguntaran..


datacion = System.DateTime.Now.ToFileTime().ToString();


se me ocurrio para darle un nombre unico a cada captura, al menos unico en el folder donde se guardan, que el nombre del archivo fuere la fecha de cuando se hizo la captura. System.DateTime.Now. me devuelve la fecha y hora del momento, TofileTime() convierte la fecha en su representacion a int32, basicamente es la cuenta del numero de segundos desde el 1er de enero de 1970 a las 00:00 hrs. hasta la fecha, lo demas creo que se explica solo

Hola, intente usando el script, pero no me aparecen las fotos en el celular, tendra que ver el unity 5 ?

posiblemente, este codigo lo probe en unity 4.6 y no tengo intencion de migrar a 5 al menos en un buen tiempo asi que no lo he probado

Yo me rendí intentando hacer eso, así que me descargué un plugin en el asset store. https://www.assetstore.unity3d.com/en/#!/content/43374" rel="external nofollow">https://www.assetstore.unity3d.com/en/#!/content/43374Yo lo descargué gratis, lo han puesto pago al parecer...

Etiquetas: