Jump to content
UnitySpain
Sign in to follow this  
UnityDevelopersXD

Cambiar la Imagen de un Boton del Canvas

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...