[Unity 6]Utilizando botões sem configurá-los no Inspetor

この記事は約4分で読めます。
スポンサーリンク

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.

スポンサーリンク

Sites que utilizei como referência

コメント

タイトルとURLをコピーしました