para pagina otra link labelledby etiqueta ejemplos crear codigo botones boton bootstrap aria button canvas unity3d unity3d-gui

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:

  1. Seleccione su script con sus funciones de botones.
  2. 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.