Mengulang melalui pemilihan objek UI

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan verifikasi

Windows
  • jendela 11
Editor Kesatuan
  • 25f1/3/2020

Prasyarat untuk tip ini

Pengaturan berikut telah dibuat sebelumnya sebagai prasyarat untuk penjelasan tips ini.

referensi

Menyebarkan Contoh Objek UI

Tempatkan tombol pada Canvas sebagai berikut: Objek yang dipilih ditampilkan dalam warna hijau untuk kejelasan.

Anda hanya dapat memilih objek yang berada di arah yang dipilih.

Saat Anda menempatkan objek UI, Anda awalnya dapat menekan tombol panah pada keyboard atau gamepad untuk memilih objek UI ke arah yang ditentukan. Ini sangat intuitif dan mudah dimengerti, jadi saya rasa Anda tidak perlu repot-repot mengubah pengaturan.

Namun, dalam tata letak seperti menu, tidak mungkin untuk melakukan operasi loop pilihan seperti "kembali ke atas saat Anda menekan ke bawah saat bagian bawah dipilih" secara default.

Pada gambar di atas, Anda tidak dapat memilih Button1 dengan menekan ke bawah saat Button3 dipilih. Tentu saja, jika Anda menekan ke atas saat Button1 dipilih, Anda tidak akan dapat memilih Button3.

Mengulang pilihan

Di sini, kami akan membuat mekanisme yang memungkinkan Anda untuk mengulang pilihan tanpa henti. Dalam tata letak sampel, Anda dapat memilih Button1 dengan menekan ke bawah saat Button3 dipilih, dan Anda dapat memilih Button3 dengan menekan ke atas saat Button1 dipilih.

Kontrol ini dilakukan dalam skrip. Ini adalah skrip tujuan umum yang dapat digunakan dengan sejumlah kecil deskripsi dan dapat digunakan seperti di adegan lain. Sebaliknya, pembatasan berikut berlaku:

  • Anda hanya dapat bergerak ke atas dan ke bawah dalam satu arah.
  • Berlaku untuk semua Selectable yang ada di bawah objek yang ditentukan

Oleh karena itu, target penggunaan terbatas pada menu yang dipilih dengan menggulir ke atas dan ke bawah, tetapi sangat berguna jika Anda membatasi diri pada tata letak itu. Omong-omong, ini terbatas pada bagian atas dan bawah, tetapi jika Anda sedikit memodifikasi skrip, Anda dapat membuatnya terbatas pada kiri dan kanan.

Buat skrip di proyek Anda. Anda dapat menamainya apa saja, tetapi saya akan SelectLoop membiarkannya sebagai .

Skripnya terlihat 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 adalah membuat pengaturan berikut untuk perilaku navigation pemilihan kunci .

  • Tekan tombol atas untuk memilih objek sebelumnya, dan pilih objek terakhir untuk memilih objek pertama.
  • Tekan tombol bawah untuk memilih objek berikutnya, atau pilih objek pertama jika itu adalah objek terakhir.

Omong-omong, urutan objek ini (Dapat Dipilih) tergantung pada urutan hierarki. Susun mereka dalam urutan yang Anda inginkan untuk dipilih dalam hierarki.

Setelah menyimpan skrip, lampirkan sebagai komponen. Script ini akan diterapkan pada objek Selectable terlampir , jadi kali Canvas ini kita akan lampirkan ke .

Coba pindahkan dan lihat apakah Anda dapat memindahkannya antara Button1 dan Button3 dengan penekanan tombol.