Knoppen gebruiken in de Unity-gebruikersinterface

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Verificatie omgeving

Ramen
  • Vensters 11
Unity-editor
  • 2020.3.25f1

Vereisten voor deze tip

De volgende instellingen zijn vooraf gemaakt als voorwaarde voor de uitleg van deze tips.

Eerst

Een knop kan worden gebruikt als een object waarop de gebruiker zelf klikt, of het kan worden gebruikt om een keuze te maken, zoals 'ja' of 'nee'. Als u wat uitgebreider wilt worden, kunt u een knop als object gebruiken om een lijstitem zoals een menu te selecteren.

Daarnaast kan het ook worden gebruikt voor foutopsporingsdoeleinden en wanneer u op een knop klikt om de status willekeurig te wijzigen.

Klik op de knop om de tekst te wijzigen

Als u gewoon op de knop klikt, voert u wat verwerking uit. Deze keer wordt elke keer dat u op de knop klikt, het tekstnummer met 1 verhoogd.

Plaatsing en configuratie van de gebruikersinterface

Voeg tekst en knoppen uit de hiërarchie toe aan de weergave.

Je kunt het overal plaatsen, zolang je het maar op een plek zet waar je het kunt zien. Omdat het moeilijk is om in de begintoestand te zien, worden instellingen zoals "witte tekstkleur", "grootte wijzigen", "lettergrootte vergroten", enz. ingesteld. De inhoud van de tekst wordt later automatisch gewijzigd, zodat u deze als "Nieuwe tekst" kunt laten staan.

De tekeninstelling van de knop is verdeeld in "Knop" en "Tekst", dus selecteer Tekst en stel deze in.

Scripts toevoegen

Selecteer de map Scènes in uw project, klik met de rechtermuisknop op een lege ruimte en selecteer C#-script om het toe te voegen. Oorspronkelijk is het beter om het script in een aparte map te maken, maar ik zal het weglaten om de werking te controleren.

De bestandsnaam moet gemakkelijk te begrijpen zijn. Voer zoveel mogelijk alfanumerieke tekens in. ButtonClick In dit geval is het ingesteld op .

Dubbelklik na het maken op het C#-script om de scripteditor te openen. Als uw scripteditor Visual Studio is, zou u iets als dit moeten zien:

Start, De methode is deze keer niet nodig, dus verwijder het, Update herschrijf het en sla het als volgt op.

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

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

  public void OnClick()
  {
  }
}

De syntaxis van C# is niet het hoofdonderwerp van deze tip, dus ik zal het niet uitleggen. Studeer alsjeblieft alleen. Alleen Unity-specifieke beschrijvingen worden besproken.

MonoBehaviour Velden die zijn geschreven in klassen die zijn overgenomen van, kunnen worden ingesteld in de Unity-editor. CountText Hier definiëren we een tekstobject met de naam Om te kunnen worden weergegeven, moet het public worden gepubliceerd met . SerializeField Als u het attribuut echter toevoegt, kunt u public het in de editor weergeven met een andere toegankelijkheid dan . Dit is een betere beschrijving als je het niet zoveel mogelijk vanuit andere klassen wilt openen, anders dan om het in de editor in te stellen.

OnClick Er worden methoden gegeven om te beschrijven wat er moet gebeuren als er op een knop wordt geklikt. public Dit moet worden gedefinieerd in .

Bijlagen vanuit de Unity-editor

Ga terug naar de Unity-editor en maak een keuze uit de hiërarchie EventSystem .

EventSystem inspector verschijnt, dus zet het C#-script dat u zojuist hebt gemaakt neer in het gebied "Component toevoegen" hieronder. Het script is nu klaar om te werken.

In feite kan dit script aan elk object worden gekoppeld, en Button het moet aan het object worden gekoppeld. In deze tip zullen we toevoegen om het uniform gemakkelijk te begrijpen EventSystem te maken. Button Natuurlijk is er geen probleem om het te bevestigen aan . Het is echter beter om het niet aan een volledig niet-gerelateerd object te bevestigen, omdat dit voor verwarring zal zorgen.

Als je kijkt naar het script dat je hebt toegevoegd, zie je dat het item "Tekst tellen" wordt weergegeven. Zodra u een veld op deze manier hebt gepubliceerd, kunt u de waarde instellen vanuit de Unity-editor. We willen toegang krijgen tot het tekstobject wanneer we op de knop klikken, dus sleep het uit de hiërarchie Text en Count Text zet het neer op . Hierdoor kunt u er op elk moment toegang toe krijgen vanuit uw script.

Maak vervolgens een keuze uit de hiërarchie Button en klik op + onder Bij klikken in het infovenster Button .

Dan wordt er één item toegevoegd.

In het item rechtsonder heb ik een script uit de EventSystem hiërarchie laten vallen. Aangezien we het object waaraan het script is gekoppeld hier moeten plaatsen, Als u een script aan een knop koppelt, moet u een knop toevoegen.

Als u op "Geen functie" klikt, wordt het bijgevoegde script weergegeven, dus ButtonClick selecteer . Selecteer de methode die u erin hebt gemaakt OnClick . Als u nu op de knop klikt, wordt de OnClick methode aangeroepen.

Uitvoerlogboek met één klik op de knop

Ik zal het logboek uitvoeren om te bevestigen dat het werkt. U kunt controleren of het werkt door slechts één regel te schrijven, en het zal erg handig zijn voor toekomstige foutopsporing, dus het is beter om het te onthouden.

ButtonClick Open het script en OnClick voeg het volgende toe aan .

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

Zodra je bent binnengekomen en opgeslagen, voer je het spel uit en klik je op de knop.

Elke keer dat u erop klikt, verschijnt er een bericht op het consoletabblad. Nu kun je zien dat het werkt.

Tekst wijzigen met een klik op de knop

Nu je de knoppen kunt verplaatsen, is het doel van deze tip bereikt. Nu ik het tekstobject heb geplaatst, wil ik de tekst elke keer dat ik op de knop klik wijzigen.

Herschrijf het script als volgt.

// 省略

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();
  }
}

De inhoud is gewoon om het aantal met 1 te verhogen elke keer dat u klikt en het getal in te stellen op het tekstobject.

Start het spel en zorg ervoor dat het aantal bij elke klik toeneemt.