Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: fernando en Abril 10, 2017, 05:02:38 PM

Título: Imagen fondo en canvas
Publicado por: fernando en Abril 10, 2017, 05:02:38 PM
Buenas.
 
Tengo un canvas al que he añadido un raw image. Como puedo hacer que desde código le asigne una imagen de fondo?
 
Tengo este código que lee unas carpetas y busca donde esta la imagen.
 

private void LoadBgImage() {
        string RuteBackground = Application.dataPath + "/StreamingAssets/ImgBackground";
        string[] files = Directory.GetFiles(RuteBackground);
        string background = files.FirstOrDefault(s => s.EndsWith(".jpg") || s.EndsWith(".png"));
       
    }

 
en background se me guarda la ruta de la imagen,como la asigno al raw image del canvas?
Título: Imagen fondo en canvas
Publicado por: josesito1432 en Abril 10, 2017, 05:08:09 PM
si o si queres agregar un raw image
 
o puede ser un image solo??
 
 
Título: Imagen fondo en canvas
Publicado por: fernando en Abril 10, 2017, 05:08:41 PM
si ,tiene que ser raw image
 
 
Título: Imagen fondo en canvas
Publicado por: josesito1432 en Abril 10, 2017, 05:09:08 PM
buen en fin, yo comunmente uso image por eso digo, en resumen, necesitarias usar la funcion WWW que se encarga de cargar el archivo desde un directorio y despues lo asignas a donde lo queres usar, a ver dame un segundo te armo unas lineas 
 
 
 

WWW www = new WWW ("file://" + PortadaSeleccionada);
GameObject.Find ("Canvas").GetComponent<Image> ().sprite=Sprite.Create(www.texture,new Rect(0f,0f,www.texture.width,www.texture.height),new Vector2(0.5f,0.5f),100f);

 
 
 
yo uso el GameObject.Find para buscar el objeto por su nombre pero si lo tenes almacenado en una variable, pones la variable seria algo asi....


 
 

VARIABLE.GetComponent<Image> ().sprite=Sprite.Create(www.texture,new Rect(0f,0f,www.texture.width,www.texture.height),new Vector2(0.5f,0.5f),100f);

 
 
Título: Imagen fondo en canvas
Publicado por: fernando en Abril 10, 2017, 05:15:05 PM
NullReferenceException: Object reference not set to an instance of an object
 
 
 
Me sale ese fallo con ese codigo
Título: Imagen fondo en canvas
Publicado por: josesito1432 en Abril 10, 2017, 05:15:33 PM
(www.texture) es donde esta almacenado la textura o la imagen seria, y despues como image usa sprite y no textura, tenes que comvertir a www.texture en un sprite y por eso ese pedazo de codigo un poco mas largo... avisame si te sirvio.
Título: Imagen fondo en canvas
Publicado por: pioj en Abril 11, 2017, 03:55:18 AM
¿Nadie más ve un patrón que se repite constantemente en todos los posts que hace @fernando ? 
 
Creo que lo mejor sería que primero siguieras bastantes tutoriales de uso básico de Unity, su GUI, y de C#...
Título: Imagen fondo en canvas
Publicado por: TheBullet en Abril 11, 2017, 09:30:43 AM
@pioj Un poco si...
 
 
 
@fernando Te lías mucho. ¿No es mas sencillo guardar una lista de sprites vinculados desde el editor y asignarlos a la imagen del canvas en vez de ir buscando las cosas en los directorios?