Noticias

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

Button y Toggle

Iniciado por DavidV, Abril 09, 2016, 09:32:00 PM

Tema anterior - Siguiente tema
Abril 09, 2016, 09:32:00 PM Ultima modificación: Abril 09, 2016, 09:33:25 PM por DavidV
Muy buenas a todos, programando el menú del proyecto en el que estoy actualmente me ha salido un problemilla, tengo dos Toggle, yo quiero que al Activar el "toggleuno" inmediatamente el "toggledos" se desactive, igualmente al contrario.He creado estas dos funciones 
   public void Toggleuno(Toggle Toggledos){
   Toggledos.isOn = false;
}

public void Toggledos(Toggle Toggleuno){
   Toggleuno.isOn = false;
}
Si bien al darle click a cualquiera de los 2 Toggles el otro se desactiva, al que se le dio click no se activa  al menos que se le dé click dos veces., ¿Cuál sería el problema ahí?, he intentado crear otra función que active el toggle al que se le dé click, pero Unity se cuelga.  Por otra parte, hay alguna manera de que al iniciar el juego un botón se presione sólo?:   

Estudiante Ing. Sistemas 



Un poco extraño el código. Donde se activa el toggle? Toggle tg1, tg2;...tg1.isOn = true;tg2.isOn = !tg1.isOn;tg2.isOn = false;tg1.isOn = !tg2.isOn; Quieres decir que esté presionado al iniciar? Pues pon el isOn a true al inicio del app.

Abril 09, 2016, 10:36:41 PM #2 Ultima modificación: Abril 09, 2016, 11:01:04 PM por DavidV
Hola http://unityspain.com/profile/27231-irobb/?do=hovercard" data-mentionid="27231" href="<___base_url___>/profile/27231-irobb/">@iRobb es un código en el que hay dos funciones publicas, este se le añade a un GameObject vacio y posteriormente se le agrega al componente OnValuechanged del Toggle.  El Toggleuno viene activado manualmente desde el Inspector. Sin embargo creo que me tocará hacerlo con variables globales y desde el Update.   Sobre lo del Boton, este no tiene una propiedad isOn en código y tampoco en el Inspector. 

Estudiante Ing. Sistemas 



No entiendo. El Toggle tiene una propiedad isOn que se accede por código:http://docs.unity3d.com/ScriptReference/UI.Toggle-isOn.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/UI.Toggle-isOn.html 

Abril 09, 2016, 10:58:07 PM #4 Ultima modificación: Abril 09, 2016, 11:53:05 PM por DavidV
Sí, el Toggle sí (y las estoy usando en  los código que he puesto), yo me estoy refiriendo al Botón. (Que es el que quiero que se presione sólo al iniciar el juego)  Tal ves no me he dado a explicar bien jaja, tengo 2 situaciones: 1. La del Toggle, lo que quiero en este es que al activar un toggle otro se desactive, (Uno de ellos ya viene activado por defecto)El problema con el código que he adjuntado es que sí, sí desactiva el otro Toggle, pero al que se le da click no se activa, al menos que se presione dos veces.2. La del Botón cuando el trazo es blanco es por que no está presionado, y cuando está azul es por que ha sido presionado, la pregunta es ¿se puede lograr que el botón sea presionado automáticamente al iniciar el juego?.   


Estudiante Ing. Sistemas 



Quieres decir que se haga click en un botón? Supongo que sí, pero no creo que sea la manera lanzarle un evento click. Tú tienes que tener capturado el evento click para realizar alguna acción, cierto, estilo?button.onClick += button_onClick;    private void button_onClick() {...
    }pues:private void pintarCosas() {...}   private void button_onClick() { this.pintarCosas();
    }y lanza pintarCosas() cuando quieras al principio. Al gif no de puede acceder ni eliminando los %20. 

Abril 09, 2016, 11:47:35 PM #6 Ultima modificación: Abril 09, 2016, 11:55:05 PM por DavidV
Ya he vuelto a adjuntar los Gif. En el gif del Boton verás dos botones, "Level" y "Categoría" Estos botones se comportarán como si fuesen pestañas.* Sí presiono el Boton level, se activará un panel (Panel level), y se desactivará el Panelcategoría, igualmente sí presiono el Boton categoria, se activa el panelcategoria, y se desactiva el panelLevelEsto funciona el panel level viene activado por default, y el código para que se active y desactive lo tengo, el problema está en que, como el panelLevel viene activado por default, el BotónLevel tiene que estar obviamente presionado por Default. (Trazo azul)     

Estudiante Ing. Sistemas 



Abril 10, 2016, 01:07:39 AM #7 Ultima modificación: Abril 10, 2016, 01:09:06 AM por iRobb
Bueno, las imágenes siguen sin verse. No sé si es el foro o que.Por lo que entiendo, yo lo que he hecho en estos casos es agrupar las condiciones en los diferentes elementos y su relación entre ellos, y un manager de los objetos que controla el resto. En plan:// En cada panelpublic void activarUIPanel(bool activar) {panel.enable = activar;boton1.enable = activar;boton2.enable = activar;...}// En el gestor de paneles, que contiene las referencias a los x panelespublic enum ePaneles { panel1 = 1, panel2 = 2, ... }private UIPanel[]  paneles; // referencias en el editorvoid activarUI(ePaneles panel, bool activar) {for (int i = 0; i< ...) paneles[panel].activarUIPanel(false); //Todos los paneles a falseSi activar truepaneles[panel].activarUIPanel = true;} Entonces, al principio del código, activa el panel por defecto que quieras.activarUI(ePaneles,panel1, true);

El cambio de paneles está programado, el problema es algo más sencillo o eso creo. He subido el gif a Tumblr creo que ahora sí funciona. http://davidvargasr.tumblr.com/image/142543249180-Al Iniciar la escena los dos botones tienen un trazo blanco, y el panel "Panel Level" está activado.-Al presionar el Botón "Category" se activa el Panel "Panel categoría" y el el trazo del botón category cambia a azul, indicando que este ha sido presionado. Ahora si el "Panel level" está activado desde que comienza la escena, entonces igualmente  el trazo del Botón "Level" al comenzar la escena debía haber sido azúl Con lo del Toggle esto es lo que pasa: http://davidvargasr.tumblr.com/image/142541517485Probé con su código, pero entonces no me dejaba desactivar el tg1 y el tg2 quedaba siempre inactivo.   

Estudiante Ing. Sistemas 



He solucionado los dos problemas, por si alguien más los tiene, el primero lo he solucionado con un Toggle group (Lo que hace no investigar a fondo) y el segundo, hice un Toggle como si fuese el botón :)

Estudiante Ing. Sistemas 



[quote author=DavidV" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35607" data-ipsquote-contentcommentid="129602 date=1460498456]He solucionado los dos problemas, por si alguien más los tiene, el primero lo he solucionado con un Toggle group (Lo que hace no investigar a fondo) y el segundo, hice un Toggle como si fuese el botón :). [/quote]podrias poner tu codigo que tenias para presionar el boton en una funcion y llamarla al inicio

Etiquetas: