Noticias

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

Cambiar la Imagen de un Boton del Canvas

Iniciado por UnityDevelopersXD, Noviembre 15, 2016, 11:03:40 PM

Tema anterior - Siguiente tema
Hola, hace mas o menos tiempo hice un tema parecido a este, pero no supieron explicar bien, osea lo hicieron, pero la verdad no entendi muy bien y no me funciono, asi que hago otro pero mas detallado.
 
Tengo una variable publica que contendra la textura nueva del boton. Lo que quiero es saber como puedo acceder al canvas para cambiarle la textura, osea que sea algo como canvas.button.texture = texturaNueva;
 
Pero realmente no se como hacerlo porque ninguna de las variables de canvas me permiten acceder a una variable (creo.
 
Entonces lo que quiero hacer es crear una variable donde coloque el boton del que quiero cambiar la textura, y que luego cambie esa textura por otra que yo quiera.
 
Como podria hacer eso?
 
Gracias, espero que puedan entender.

Hola, yo tambien pase por lo mismo hace poco, lo resolvi asi:
 

using UnityEngine.UI;
//
//
//
 
public GameObject imagen;   //el gameObject que tiene la imagen
public Sprite prueba;   //un sprite de prueba
//
//
//
imagen.GetComponent<Image> ().sprite = prueba;  

 
Saludos

Prácticamente es lo mismo que te respondieron la otra vez, pero vas a tener que adaptarlo a tu código y dale algunas vueltas. Lo que hace el código que te voy a poner a continuación es cargar imágenes de una carpeta del escritorio que selecciono y después añadirlas a un Image de la UI. Mas o menos es lo que tienes que hacer tu pero en vez de cargarlas tendrás que coger tus imágenes y meterlas en algún array de imágenes o algo asi. Yo primero he tenido que crear un texture2d para crear el sprite que después es lo que pide Image.
 

   public Image Imagen;
    public Texture2D tex = null;    
    byte[] filaimagen;
//
//
//
    IEnumerator Fotos()
    {
        foreach (string file in Direcciones)
        {
            if (slider.value == 0) yield return new WaitUntil(() => slider.value != 0) ;
            if(file.Contains(".jpg") || file.Contains(".png"))
            {    
                //Debug.Log(file);            
                filaimagen = File.ReadAllBytes(file);              
                tex = new Texture2D(1024, 1024);
                tex.LoadImage(filaimagen);
                Imagen.sprite = Sprite.Create(tex, new Rect(0,0,tex.width,tex.height), new Vector2(.5f, .5f),100);
               
                yield return new WaitForSeconds(TiempodeFotos);  
                if (CambiarVista == false) break;                  
            }                  
        }
        StartCoroutine(Fotos()); //Si llegamos a la ultima foto volvemos a empezar.
    }

 
adaptándolo seguro lo consigues. Espero haberte ayudado.

Ah ya veo, muchas gracias a los dos, luego lo pruebo y lo aviso.

Etiquetas: