Gelung melalui pemilihan objek UI

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran pengesahan

Windows
  • Windows 11
Penyunting Perpaduan
  • 2020.3.25f1

Prasyarat untuk petua ini

Tetapan berikut telah dibuat terlebih dahulu sebagai prasyarat untuk penjelasan petua ini.

Rujukan

Menggunakan Objek UI Sampel

Letakkan butang pada Kanvas seperti berikut: Objek terpilih dipaparkan dalam warna hijau untuk kejelasan.

Anda hanya boleh memilih objek yang berada dalam arah yang dipilih.

Apabila anda meletakkan objek UI, anda pada mulanya boleh menekan kekunci anak panah pada papan kekunci atau pad permainan untuk memilih objek UI dalam arah yang ditentukan. Ini sangat intuitif dan mudah difahami, jadi saya rasa anda tidak perlu bersusah payah menukar tetapan.

Walau bagaimanapun, dalam susun atur seperti menu, tidak mungkin untuk melakukan operasi gelung pemilihan seperti "kembali ke atas apabila anda menekan ke bawah semasa bahagian bawah dipilih" secara lalai.

Dalam gambar di atas, anda tidak boleh memilih Button1 dengan menekan ke bawah semasa Button3 dipilih. Sudah tentu, jika anda menekan semasa Button1 dipilih, anda tidak akan dapat memilih Button3.

Gelung melalui pilihan

Di sini, kami akan membuat mekanisme yang membolehkan anda membuat pilihan tanpa henti. Dalam susun atur sampel, anda boleh memilih Button1 dengan menekan ke bawah semasa Button3 dipilih, dan anda boleh memilih Button3 dengan menekan semasa Button1 dipilih.

Kawalan ini dilakukan dalam skrip. Ia adalah skrip tujuan umum yang boleh digunakan dengan sebilangan kecil penerangan dan boleh digunakan seperti dalam adegan lain. Sebaliknya, sekatan berikut dikenakan:

  • Anda hanya boleh bergerak ke atas dan ke bawah dalam satu arah.
  • Digunakan pada semua Selectable sedia ada di bawah objek yang ditentukan

Oleh itu, sasaran penggunaan adalah terhad kepada menu yang dipilih dengan menatal ke atas dan ke bawah, tetapi sangat berguna jika anda mengehadkan diri anda kepada susun atur tersebut. Dengan cara ini, ia terhad kepada bahagian atas dan bawah, tetapi jika anda mengubah suai skrip sedikit, anda boleh menjadikannya terhad kepada kiri dan kanan.

Mencipta skrip dalam projek anda. Anda boleh menamakannya apa sahaja, tetapi saya akan SelectLoop meninggalkannya sebagai .

Skrip kelihatan seperti ini:

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

Apa yang kami lakukan ialah membuat tetapan berikut untuk tingkah laku navigation pemilihan utama .

  • Tekan kekunci atas untuk memilih objek sebelumnya dan pilih objek terakhir untuk memilih objek pertama.
  • Tekan kekunci bawah untuk memilih objek berikut atau pilih objek pertama jika objek terakhir.

Dengan cara ini, tertib objek ini (Boleh Dipilih) bergantung pada susunan hierarki. Susunkannya mengikut urutan yang anda mahu mereka dipilih dalam hierarki.

Selepas menyimpan skrip, pasangkannya sebagai komponen. Skrip ini akan digunakan pada objek Selectable yang dilampirkan , jadi kali Canvas ini kita akan melampirkan kepada .

Cuba gerakkannya dan lihat sama ada anda boleh mengalihkannya antara Button1 dan Button3 dengan ketukan kekunci.