Jump to content
Sign in to follow this  
totemalf

ANSWERED Animación de botón al Invoukar

Recommended Posts

Buenas team,  me encuentro el siguiente problema.

Estoy haciendo un menu que funciona con teclado y gamepad. En principio funciona bien, pero me encuentro un problemilla:

Para pulsar cada botón uso una función que llamo desde el inspector con On Click () ... por defecto, On Click () se ejecuta con los Enters o con el Space, y con un mando Ps4 con el button0 que viene a ser el cuadrado. El problema viene cuando yo quiero presionar el botón del menú con la X del Pad, que es el button1; lo mapeo como PadX, lo llamo desde el script y funciona bien, peeero la imagen de boton presionado no aparece, no cambia de seleccionado a presionado. La forma en que he llamado al On Click() desde el update: 

Quote

 

 if (Input.GetButtonDown("PadX"))
        {    
            botonActivo.onClick.Invoke();
        }

Gracias!!!

 

 

Edited by pioj
Por favor, usa el <> o el "quote" para pegar código.

Share this post


Link to post
Share on other sites

Entiendo que quieres simular el click del botón. La manera de llamar al click es correcta. Lo que ocurre es que eso no afecta al componente Selectable que contiene el Button donde se realizan los cambios de sprites. Tendrás que manipular el selectable del button tú mismo cambiando los estados del selectable:

https://docs.unity3d.com/2017.4/Documentation/ScriptReference/UI.Selectable.html

 

  • Like 1

Share this post


Link to post
Share on other sites

Correcto, quiero simular el click. Llevo rato rondando el spriteState, transition, etc... cambiar las imagenes del selectable es fácil, lo que no termino de entender es como ponerlo en estado pressed al hacer el invoke. Poner cada botón en select es más facil, ya que se hace automaticamente al usar el método Select que selecciona todo el selectable... estoy un poco frustrado ya hoy con esta rallada, a ver si me despejo y mañana lo intento de nuevo. 

A unas malas siempre podría hacerlo todo a pelo con sprites y pasar de los buttons. 

Edit: Otra cosa que se me ocurre, existe alguna forma de simular desde el script que se ha pulsado una tecla?

Thx.

Edited by totemalf

Share this post


Link to post
Share on other sites

No es complicado. Solamente tienes que cambiar el estado vía el selectable. Mírate el enlace del selectable.

Share this post


Link to post
Share on other sites

Llamadme torpe, pero no encuentro como cambiar de un estado a otro desde el script. Puedo ver en que estado se encuentra, cambiar los sprites  de los estados, y hacer cosas cuando son seleccionados o presionados, el problema es que se seleccionan o presionan desde fuera :34_rolling_eyes:

12 hours ago, totemalf said:

Edit: Otra cosa que se me ocurre, existe alguna forma de simular desde el script que se ha pulsado una tecla?

 

Share this post


Link to post
Share on other sites

La verdad que es bastante curioso como funciona el invoke. He estado haciendo pruebecillas a ver si lo termino de entender. He creado un escript que se llame cuando se clica al botón, de esta manera:

    void Start()
    {
        Button yo = gameObject.GetComponent<Button>();
        yo.onClick.AddListener(SaludoBoton);
        
    }
    void SaludoBoton()
    {
        print("Soy un machaco");
    }

Lo curioso del tema, es que cuando clico con el ratón, o con el teclado se imprime en el primer lugar de la consola, y se va haciendo el collapse bien. Pero cuando clico con el gamepad, que es el que llama al botón con el invoke, me lo imprime en una fila a parte... no lo acumula junto. A pesar de ejecutar la misma función, del mismo botón, es como si Invoke viviese en un planeta a parte.

cosasa.jpg

Share this post


Link to post
Share on other sites

Buenas, quiero dar este post como Resuelto. Al final  la solución era infinitamente más sencilla que lo que yo estaba intentando hacer. Me di cuenta al echar un vistazo al Evensystem de que tenía submit button y cancel button, asi que bastaba con ir al Input Manager y cambiar joystick button 0 por joystick button 1 en el submit.

Saluti

Share this post


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

×
×
  • Create New...