Usando botões na interface do usuário do Unity

Página atualizada :
Data de criação de página :

Ambiente de verificação

Windows
  • Janelas 11
Unity Editor
  • 25.3.2020F1

Pré-requisitos para esta dica

As configurações a seguir foram feitas com antecedência como pré-requisito para a explicação dessas dicas.

Inicialmente

Um botão pode ser usado como um objeto que o usuário clica por conta própria ou pode ser usado para fazer uma escolha, como "sim" ou "não". Se você quiser ficar um pouco mais elaborado, você pode usar um botão como um objeto para selecionar um item de lista, como um menu.

Além disso, ele também pode ser usado para fins de depuração e ao clicar em um botão para alterar o estado arbitrariamente.

Clique no botão para alterar o texto

Se você simplesmente clicar no botão, você fará algum processamento. Desta vez, cada vez que você clicar no botão, o número de texto aumentará em 1.

Posicionamento e configuração da interface do usuário

Adicione texto e botões da hierarquia à exibição.

Você pode colocá-lo em qualquer lugar, desde que você colocá-lo em um lugar onde você pode vê-lo. Como é difícil ver no estado inicial, configurações como "cor do texto branco", "alterar tamanho", "aumentar tamanho da fonte", etc. são definidas. O conteúdo do Texto será alterado automaticamente posteriormente, para que você possa deixá-lo como "Novo Texto".

A configuração de caracteres do botão é dividida em "Botão" e "Texto", então selecione Texto e defina-o.

Adicionando scripts

Selecione a pasta Cenas do seu projeto, clique com o botão direito do mouse em um espaço vazio e selecione Script C# para adicioná-lo. Originalmente, é melhor criar o script em uma pasta separada, mas vou omiti-lo com a finalidade de verificar a operação.

O nome do arquivo deve ser fácil de entender. Insira o maior número possível de caracteres alfanuméricos. ButtonClick Nesse caso, ele é definido como .

Depois de criado, clique duas vezes no script C# para abrir o editor de scripts. Se o editor de scripts for o Visual Studio, você verá algo assim:

Start, O método não é necessário desta vez, então exclua-o, Update reescreva-o e salve-o da seguinte maneira.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;    // 追加

public class ButtonClick : MonoBehaviour
{
  /// <summary>カウントアップするテキストオブジェクト。</summary>
  [SerializeField] Text CountText;

  public void OnClick()
  {
  }
}

A sintaxe do C# não é o tópico principal desta dica, então não vou explicá-la. Por favor, estude por conta própria. Apenas descrições específicas de Unity são discutidas.

MonoBehaviour Os campos escritos em classes herdadas de poderão ser definidos no Editor Unity. CountText Aqui, definimos um objeto de texto chamado Para que ele seja exibido, ele public deve ser publicado com . SerializeField No entanto, se você adicionar o atributo, poderá public exibi-lo no editor com acessibilidade diferente de . Esta é uma descrição melhor se você não quiser acessá-lo de outras classes tanto quanto possível, a não ser com a finalidade de configurá-lo no editor.

OnClick São fornecidos métodos para descrever o que fazer quando um botão é clicado. public Isso deve ser definido em .

Anexando do Editor Unity

Retorne ao Editor Unity e selecione na hierarquia EventSystem .

EventSystem O inspetor aparecerá, então solte o script C# que você acabou de criar na área "Adicionar componente" abaixo. O roteiro já está pronto para funcionar.

Na verdade, esse script pode ser anexado a qualquer objeto e Button deve ser anexado ao objeto. Nesta dica, vamos adicionar para torná-lo uniformemente fácil de entender EventSystem . Button Claro, não há nenhum problema em anexá-lo ao . No entanto, é melhor não anexá-lo a um objeto completamente não relacionado, pois causará confusão.

Se você olhar para o script que você adicionou, você pode ver que o item "Count Text" é exibido. Depois de publicar um campo dessa maneira, você poderá definir o valor do Editor Unity. Queremos acessar o objeto de texto quando clicamos no botão, então arraste da hierarquia Text e Count Text solte-o no . Isso permitirá que você o acesse a partir do seu script a qualquer momento.

Em seguida, selecione na hierarquia Button e clique em + em Ao clicar no Inspetor Button .

Em seguida, um item será adicionado.

No item inferior direito, retirei um script anexado da EventSystem hierarquia. Como precisamos colocar o objeto ao qual o script está anexado aqui, Se você estiver anexando um script a um botão, será necessário incluir um botão.

Se você clicar em "Sem função", o script anexado será exibido, então ButtonClick selecione . Selecione o método que você criou OnClick nele. Agora, quando você clica no botão, o OnClick método é chamado.

Log de saída com o clique de um botão

Vou gerar a saída do log para confirmar que ele funciona. Você pode verificar se ele funciona apenas escrevendo uma linha, e será muito útil para depuração futura, por isso é melhor lembrá-lo.

ButtonClick Abra o script e OnClick adicione o seguinte ao .

public void OnClick()
{
  // コンソール ログを出力
  Debug.Log("ボタンが押されました!");
}

Depois de entrar e salvar, execute o jogo e clique no botão.

Cada vez que você clica nele, uma mensagem aparece na guia do console. Agora você pode ver que está funcionando.

Alterar texto com um clique no botão

Agora que você pode mover os botões, o objetivo desta dica foi alcançado. Agora que coloquei o objeto de texto, quero alterar o texto sempre que clicar no botão.

Reescreva o script da seguinte maneira.

// 省略

public class ButtonClick : MonoBehaviour
{
  /// <summary>カウントアップするテキストオブジェクト。</summary>
  [SerializeField] Text CountText;

  /// <summary>クリックカウント。</summary>
  private int _counter = 0;

  public void OnClick()
  {
    // コンソール ログを出力
    Debug.Log("ボタンが押されました!");

    // カウントを増やす
    _counter++;

    // カウントした数を表示する
    CountText.text = _counter.ToString();
  }
}

O conteúdo é simplesmente incrementar a contagem em 1 cada vez que você clicar e definir o número para o objeto de texto.

Execute o jogo e certifique-se de que o número aumenta a cada clique.