button - pagina - codigo para crear botones en html
¿Detectando qué botón de UI se presionó dentro del lienzo? (2)
Tengo como 10 botones en mi UI y debo verificar cuál fue tocado. Estaba usando la siguiente lógica y funcionaba bien, pero ahora recibo este error por alguna razón:
NullReferenceException: Object reference not set to an instance of an object
DetectButton.Start () (at Assets/Scripts/DetectButton.cs:14)
¿Alguna idea de lo que podría estar pasando? Aquí está mi código (adjunto al lienzo), y estoy usando la versión 5.1.0f3 de Unity. Si necesita cualquier otra información, con gusto la proporcionaré, gracias de antemano
void Start()
{
this.GetComponent<Button>().onClick.AddListener(() =>
{
if (this.name == "btnJogadores2")
{
print ("2 jogadores");
jogadores = 2;
}
//QuantidadeJogadores(this.name);
//QuantidadePartidas(this.name);
});
}
El código no está probado, pero debería comenzar a obtener todos los botones.
void Start() {
var buttons = this.GetComponents<Button> ();
foreach(var button in buttons) {
button.onClick.AddListener(() = > {
if (this.name == "btnJogadores2") {
print("2 jogadores");
jogadores = 2;
}
//QuantidadeJogadores(this.name);
//QuantidadePartidas(this.name);
});
}
}
En realidad, será difícil distinguir entre los botones. El enfoque más práctico sería hacer 10 GameObjects (Child of the Canvas) y adjuntar su Script a todos ellos.
No tienes que hacer todo esto de la manera en que lo haces.
Una práctica más fácil y buena sería crear 10 GameObjects separados para cada botón dentro de su lienzo. y luego crea una sola secuencia de comandos con 10 funciones separadas para todos los botones que contiene. Adjunte ese guión a su lienzo. y luego en el botón GameObject, seleccione la secuencia de comandos en la función deseada. Muestra abajo
void Start() { }
void Update() { }
public void button1()
{
Debug.Log("Button3");
}
public void button2()
{
Debug.Log("Button1");
}
public void button3()
{
Debug.Log("Button3");
}
NOTA: button1, button2 y button3 son las funciones para 3 botones separados
Luego dentro de tu unidad Inspector:
- Seleccione su script con sus funciones de botones.
- Asignarle el método deseado a su botón.
Después de ejecutar su escena y su botón llamará a los métodos asignados correctamente.