Gennemgå markeringen af brugergrænsefladeobjekter

Side opdateret :
Dato for oprettelse af side :

Miljø til bekræftelse

Windows
  • Windows 11
Enhedslistens redaktør
  • 2020.3.25f1

Forudsætninger for dette tip

Følgende indstillinger er foretaget på forhånd som en forudsætning for forklaringen af disse tip.

henvisning

Installation af eksempler på brugergrænsefladeobjekter

Placer knappen på lærredet som følger: Det markerede objekt vises med grønt for klarhedens skyld.

Du kan kun markere objekter, der er i den valgte retning.

Når du placerer et brugergrænsefladeobjekt, kan du først trykke på piletasterne på et tastatur eller en gamepad for at vælge brugergrænsefladeobjektet i den angivne retning. Dette er meget intuitivt og let at forstå, så jeg tror ikke, du behøver at gider at ændre indstillingerne.

I et menulignende layout er det dog ikke muligt at udføre en markeringsløjfehandling som f.eks. "vend tilbage til toppen, når du trykker ned, mens bunden er markeret" som standard.

I figuren ovenfor kan du ikke vælge Knap1 ved at trykke ned, mens Knap3 er valgt. Hvis du trykker op, mens Knap1 er valgt, kan du naturligvis ikke vælge Knap3.

Gennemgå markeringer

Her opretter vi en mekanisme, der giver dig mulighed for at løbe gennem valgene uendeligt. I eksempellayoutet kan du vælge Knap1 ved at trykke ned, mens Knap3 er valgt, og du kan vælge Knap3 ved at trykke op, mens Knap1 er valgt.

Denne kontrol udføres i et script. Det er et script til generelle formål, der kan bruges med et lille antal beskrivelser og kan bruges som i andre scener. I stedet gælder følgende begrænsninger:

  • Du kan kun bevæge dig op og ned i én retning.
  • Gælder for alle Selectable eksisterende under det angivne objekt

Derfor er målet for brug begrænset til menuer, der vælges ved at rulle op og ned, men det er meget nyttigt, hvis du begrænser dig til det layout. Forresten er det begrænset til top og bund, men hvis du ændrer scriptet lidt, kan du gøre det begrænset til venstre og højre.

Opret et script i projektet. Du kan navngive det noget, men jeg vil SelectLoop lade det være som .

Scriptet ser sådan ud:

using UnityEngine;
using UnityEngine.UI;  // 追加

public class SelectLoop : MonoBehaviour
{
  // 最初のフレーム更新の前に開始が呼び出されます
  void Start()
  {
    // ボタンなど選択可能なコンポーネントを取得する
    var selects = GetComponentsInChildren<Selectable>();
    for (var i = 0; i < selects.Length; i++)
    {
      var nav = selects[i].navigation;
      nav.mode = Navigation.Mode.Explicit;
      nav.selectOnUp = selects[i == 0 ? selects.Length - 1 : i - 1];
      nav.selectOnDown = selects[(i + 1) % selects.Length];
      selects[i].navigation = nav;
    }
  }

  // 更新はフレームごとに1回呼び出されます
  void Update() { }
}

Hvad vi laver er at foretage følgende indstillinger for nøglevalgsadfærd navigation .

  • Tryk på op-tasten for at vælge det forrige objekt, og vælg det sidste objekt for at markere det første objekt.
  • Tryk på ned-tasten for at vælge det næste objekt, eller vælg det første objekt, hvis det er det sidste objekt.

Forresten afhænger rækkefølgen af dette objekt (valgbar) af hierarkiets rækkefølge. Arranger dem i den rækkefølge, de skal vælges i hierarkiet.

Når du har gemt scriptet, skal du vedhæfte det som en komponent. Dette script vil blive anvendt på i vedhæftet objekt Selectable , så denne gang Canvas vedhæfter vi til .

Prøv at flytte den og se, om du kan flytte den mellem Knap1 og Knap3 med et tastetryk.