Coisas que eu quero fazer
O artigo a seguir utiliza botões definidos no Inspector.
No entanto, como o botão não é usado dentro da classe após a configuração do callback, não há necessidade de tê-lo como membro, e para alguém acostumado a escrever código, configurar o botão usando uma GUI é trabalhoso. (Mesmo olhando para o código, é difícil dizer qual botão está configurado.)
Veja como obter um botão a partir do código.
Código anterior
No artigo acima, escrevi o seguinte código.
O botão m_Button está sendo configurado no Inspector.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
public Button m_Button;
void Start()
{
m_Button.onClick.AddListener(() => ButtonClicked(42));//register function
}
void ButtonClicked(int buttonNo)////argument type can be changed
{
Debug.Log("Button clicked = " + buttonNo);///Output log
/*process by click*/
}
}implementação
As seguintes alterações serão feitas:
Remover a variável membro m_Button
Você pode obter o GameObject usando GameObject.Find( ButtonName ).
ButtonName é o nome que você definiu no Inspector.

Isso recupera o componente de botão do GameObject. Esse componente pode ser acessado chamando `ok_btn.onClick.AddListener`, assim como um botão configurado externamente.
public class Example : MonoBehaviour
{
void Start()
{
Button ok_btn = GameObject.Find("ButtonName").GetComponent<Button>();
ok_btn.onClick.AddListener(() => ButtonClicked(42));
}
void ButtonClicked(int buttonNo)////argument type can be changed
{
Debug.Log("Button clicked = " + buttonNo);////Output log
/*process by click*/
}
}Nota lateral
Você pode obter não apenas instâncias de botões, mas também outras instâncias.
Para RawImage, funciona da seguinte forma: RawImage_Name é o nome definido no Inspector, assim como acontece com Button.
GameObject.Find("RawImage‗Name").GetComponent<RawImage>();Resultado
Consegui obter o botão e configurar um retorno de chamada usando apenas o script, sem precisar configurar o botão no Inspector.


コメント