Jump to content
UnitySpain
Sylar

Dudas con objetos Canvas

Recommended Posts

Buenas tardes, este es mi primera intervención así que aprovecho para saludaros a todos, espero que me podais ayudar y poder ayudar en lo que pueda, aunque acabo de empezar con Unity y con la programación de videojuegos en general, estoy haciendo un juego de tablero de preguntas y respuestas almacenando puntuaciones, utilizo un objeto canvas y pongo arriba la pregunta y dos botones con Si o No. Mis dos preguntas son bastante concretas, a ver si alguien puede ayudarme:

1-He conseguido que los botones se iluminen al clickarlos pero, podría conseguir que únicamente se ilumine el borde de color verde al acertar y el borde de color rojo al fallar?

 

2-Por otra parte almaceno los puntos en una variable estática y, al final a la hora de presentar los resultados no sé como hacer que el objeto Text del canvas tome el valor de mi variable.

 

Sé que son dudas bastante básicas pero estoy empezando jeje. 

 

Gracias de antemano.

Share this post


Link to post
Share on other sites

1- El button creo que tiene una variable llamada colors.Con ella puedes intentar cambiar los colores.

EDIT: Encontre esto en la pagina de unity: http://docs.unity3d.com/ScriptReference/UI.Selectable-colors.html

Tambien esto: http://docs.unity3d.com/ScriptReference/Color.html

2-Esto es lo que hago para usar el valor de una variable entera en un component Text:

gameObject.Find("IOContent").GetComponent.<UI.Text>().text += "\n You dealt " +  Attack_Value + " damage to spider";

La variable Attack_Value es entera (int).

Creo esto tambien funciona:

  1. Tuint.ToString();

 

Edited by ¥-Shido

Share this post


Link to post
Share on other sites

Gracias por tu respuesta.

1- En efecto tengo la variable colors que hace referencia al color del objeto, pero lo que yo intento cambiar es únicamente el borde, no todo el botón.

2- Por otra parte el Tuint.ToString(); dónde tengo que ponerlo?, he probado a ponerlo en un script y asignarselo pero no hace nada

Share this post


Link to post
Share on other sites

1- No tengo ni idea de cómo hacerlo xD

2- El esquema creo que sería el siguiente:

public class Miclase{

Text ComponenteTextDeMiGameobjectDondeEstaElTexto;

void MostrarResultados(int puntos){

ComponenteTextDeMiGameobjectDondeEstaElTexto.text = puntos; //Si te da error en puntos pones puntos.ToString() en lugar de puntos

}

}

Creo que esto te debería de ayudar :D

Share this post


Link to post
Share on other sites

Gracias por la ayuda chicos.

Pioj la solución de los bordes si parece la sencilla dicha así xd, gracias. Me pondré con ella y en breves comentaré si me ha funcionado.

Por otro lado, al clickar un botón quería que apareciese un mesaje que ocupará toda la pantalla, he pensado en utilizar otro objeto canvas y activarlo y desactivarlo después de unos segundos. Sabeis si el objeto canvas tiene alguna propiedad para hacerlo invisible?? O para superponer uno encima de otro de forma que se aprecie perfectamente el primero pero con cierta transparecia para que también se vea el segundo?

Share this post


Link to post
Share on other sites

Pero, pero, no pongas un canvas con otro canvas y otro canvas. Mírate el UI y verás algo que se llama panel.

Share this post


Link to post
Share on other sites

Pero, pero, no pongas un canvas con otro canvas y otro canvas. Mírate el UI y verás algo que se llama panel.

Una vez cometí ese error XD.

Todo un día arreglándolo .-.

Edited by ¥-Shido

Share this post


Link to post
Share on other sites

jaja vale vale, parece que he dicho alguna tontería. Lo intentaré con el panel, lo he visto dentro de Unity pero no obstante no lo encuentro en la documentación:

http://docs.unity3d.com/es/current/Manual/UICanvas.html

La búsqueda empiezo a sospechar que no funciona o algo, como puedo hacer para buscar información sobre el panel(funciones que tiene, variables, etc). Porque necesito saber si tiene alguna propiedad para hacerlo invisible, una especie de OnDisable() o algo. Destruír el objeto no me sirve porque inicialemente tiene que estar activo aunque no visible.

Edited by Sylar

Share this post


Link to post
Share on other sites

Gracias por la ayuda chicos. El componente outline era exactamente lo que buscaba.

 

Por otra parte a IRoob le gustará saber que ya he eliminado los canvas de más que utilizaba, cierto es que no era una buena opción. No obstante, no termino de ver la utilidad del Panel. Simplemente lo que hago ahora es habilitar y deshabilitar objetos dentro del canvas para que aparezcan y desaparezcan mis textos. Pero el panel, no sé..... no le veo la funcionalidad.

Share this post


Link to post
Share on other sites

También puedes activar y desactivar el panel, que activa/desactiva los componentes que contiene. Lo has probado en multiresoluciones? Verás entonces el panel de otra manera.

Share this post


Link to post
Share on other sites

Pues es el siguiente paso que estoy haciendo, y los buttons aún utilizando el Anchors me bailan un poco. Probaré el panel.

 

Por otra parte me estuve peleando bastante con el outline y al final conseguí sacar como cambiarlo por script, por si a alguien le sirve es de la siguiente manera:

 

Outline borde.effectColor = new Color(0,1,0,1);

 

He tardado bastante ya que ni en el editor ni en la API me aparece que la función reciba un Color, cosa que me sorprendió bastante. Existe otra herramienta de consulta(a parte de google) o son cosillas que se van sacando por la experiencia?? Mas que nada para poder ser un poquillo mas autosuficiente, llevaba una hora con eso y ya estaba a punto de volver a preguntar aquí:D:D

 

Share this post


Link to post
Share on other sites

×
×
  • Create New...