Cilpa caur lietotāja interfeisa objektu atlasi

Lapa atjaunota :
Lapas izveides datums :

Verifikācijas vide

Windows
  • Operētājsistēmā Windows 11
Vienotības redaktors
  • 2020.3.25f1

Priekšnoteikumi šim padomam

Tālāk norādītie iestatījumi ir veikti iepriekš kā priekšnoteikums šo padomu izskaidrošanai.

Atsauce

UI paraugu objektu izvietošana

Novietojiet pogu uz audekla šādi: Skaidrības labad atlasītais objekts tiek parādīts zaļā krāsā.

Varat atlasīt tikai tos objektus, kas atrodas atlasītajā virzienā.

Novietojot UI objektu, sākotnēji varat nospiest tastatūras vai gamepad bulttaustiņus, lai atlasītu UI objektu norādītajā virzienā. Tas ir ļoti intuitīvi un viegli saprotams, tāpēc es nedomāju, ka jums ir jāuztraucas par iestatījumu maiņu.

Tomēr izvēlnei līdzīgā izkārtojumā pēc noklusējuma nav iespējams veikt atlases cilpas darbību, piemēram, "atgriezties augšpusē, kad nospiežat uz leju, kamēr ir atlasīts apakšējais".

Iepriekš redzamajā attēlā nevar atlasīt Button1, nospiežot uz leju, kamēr ir atlasīta Button3. Protams, ja jūs nospiežat, kamēr ir atlasīta Poga1, jūs nevarēsit izvēlēties Button3.

Cilpas rādīšana atlasēs

Šeit mēs izveidosim mehānismu, kas ļauj bezgalīgi cilpot cauri atlasei. Parauga izkārtojumā varat atlasīt Button1, nospiežot uz leju, kamēr ir atlasīta Poga3, un varat atlasīt Button3, nospiežot uz augšu, kamēr ir atlasīta Poga1.

Šī kontrole tiek veikta skriptā. Tas ir vispārējas nozīmes skripts, ko var izmantot ar nelielu skaitu aprakstu, un to var izmantot tāpat kā citās ainās. Tā vietā tiek piemēroti šādi ierobežojumi:

  • Jūs varat pārvietoties tikai uz augšu un uz leju vienā virzienā.
  • Attiecas uz visiem Selectable esošajiem, kas atrodas norādītajā objektā

Tāpēc lietošanas mērķis ir ierobežots ar izvēlnēm, kas atlasītas, ritinot uz augšu un uz leju, taču tas ir ļoti noderīgi, ja aprobežojaties ar šo izkārtojumu. Starp citu, tas ir ierobežots ar augšējo un apakšējo daļu, bet, ja nedaudz modificējat skriptu, varat to ierobežot pa kreisi un pa labi.

Izveidojiet skriptu savā projektā. Jūs varat to nosaukt par jebko, bet es to atstāšu SelectLoop kā .

Skripts izskatās šādi:

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

Tas, ko mēs darām, ir veikt šādus iestatījumus galvenajai atlases uzvedībai navigation .

  • Nospiediet augšupvērsto taustiņu, lai atlasītu iepriekšējo objektu, un atlasiet pēdējo objektu, lai atlasītu pirmo objektu.
  • Nospiediet lejupvērsto taustiņu, lai atlasītu nākamo objektu, vai atlasiet pirmo objektu, ja tas ir pēdējais objekts.

Starp citu, šī objekta secība (atlasāms) ir atkarīga no hierarhijas secības. Sakārtojiet tos tādā secībā, kādā vēlaties, lai tie tiktu atlasīti hierarhijā.

Pēc skripta saglabāšanas pievienojiet to kā komponentu. Šis skripts tiks piemērots pievienotajā objektā Selectable , tāpēc šoreiz Canvas mēs pievienosim .

Mēģiniet to pārvietot un pārbaudiet, vai varat to pārvietot starp Button1 un Button3 ar taustiņsitienu.