Noticias

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

Guardar Texture2D de la Galería en un Prefabs

Iniciado por ditron77, Mayo 25, 2016, 06:19:50 PM

Tema anterior - Siguiente tema
Saludos a todos, quisiera saber como puedo guardar un objeto Texture2D que he obtenido desde la galería del jugador a PlayerPrefs.
 
Para al iniciar la aplicación poder cargar de nuevo la Texture2D.
 
Espero puedan ayudarme, saludos y gracias

puedes convertir el array de colores en un string y guardarlo asi

Si lo tienes guardado como un asset en la carpeta de Resources, puedes acceder a él cargando el asset.

Mayo 27, 2016, 12:20:21 PM #3 Ultima modificación: Mayo 27, 2016, 12:22:53 PM por ditron77
Braltor y sabes si existe una función para obtener el array de colores? He comprobado que Texture2D.GetPixels te devuelve un array de Color[], voy a probar de esta forma y comento.
 
Pioj esa es la duda que tengo, si al venir de la galería Unity lo almacena en la carpeta Resources, porque por defecto la app no contiene la textura, sino que es una cargada por el usuario desde la galeria.
 
Gracias a ambos de antemano.

asi es... puedes convertir el color en hexadecimal como se hace en HTML: FFFFFF (blanco), y como todos tienen el mismo tamaño formas una cadena q luego puedes recuperar

Mejor vamos por partes.
 
Qué es exactamente la galería? Cargar una imagen del PC del usuario?
 
De ser así, por qué no guardas la ruta y ya?
 
De ser completamente necesario guardar la imagen, la solución más optima es hacer un encode a PNG para no perder calidad, coger los bytes[] de la imagen y convertirlos a base64, eso te dará directamente una string que podrás guardar en PlayerPrefs (grosso modo así se hace si hay que guardar una imagen en una base de datos). Luego simplemente para obtenerla es hacer lo mismo pero a la inversa.
 
Simplemente con Googlear un poco verás que en realidad es muy sencillo.

Mayo 29, 2016, 06:56:03 PM #6 Ultima modificación: Mayo 30, 2016, 03:37:29 AM por pioj
Gracias vancete, es una app de Android, es fácil si sabes que buscar, tu ayuda me ha servido para solucionarlo en apenas unas líneas.
 
Para guardar la texture2D:
 

byte[] bytesTexture = foto.EncodeToPNG();
string encodedText = Convert.ToBase64String(bytesTexture);
PlayerPrefs.SetString("foto", encodedText);
Para cargar la texture2D:
if (PlayerPrefs.HasKey("foto"))
            {
                string fot = PlayerPrefs.GetString("foto");
                Texture2D foto = new Texture2D(34,54);
                byte[] bytes = Convert.FromBase64String(fot);
                foto.LoadImage(bytes);
  }

 
Muchas gracias a todos ;)
 
 

Etiquetas: