Lặp qua việc lựa chọn các đối tượng UI

Trang Cập Nhật :
Ngày tạo trang :

Môi trường xác minh

Windows
  • cửa sổ 11
Biên tập viên Unity
  • 2020.3.25f1

Điều kiện tiên quyết cho mẹo này

Các cài đặt sau đây đã được thực hiện trước như một điều kiện tiên quyết để giải thích các mẹo này.

tham khảo

Triển khai các đối tượng UI mẫu

Đặt nút trên Canvas như sau: Đối tượng đã chọn được hiển thị bằng màu xanh lá cây cho rõ ràng.

Bạn chỉ có thể chọn các đối tượng theo hướng đã chọn.

Khi bạn đặt một đối tượng UI, ban đầu bạn có thể nhấn các phím mũi tên trên bàn phím hoặc gamepad để chọn đối tượng UI theo hướng được chỉ định. Điều này rất trực quan và dễ hiểu, vì vậy tôi không nghĩ bạn cần phải bận tâm đến việc thay đổi cài đặt.

Tuy nhiên, trong bố cục giống như menu, không thể thực hiện thao tác vòng lặp lựa chọn chẳng hạn như "quay lại trên cùng khi bạn nhấn xuống trong khi đáy được chọn" theo mặc định.

Trong hình trên, bạn không thể chọn Button1 bằng cách nhấn xuống trong khi Button3 được chọn. Tất nhiên, nếu bạn nhấn lên trong khi Button1 được chọn, bạn sẽ không thể chọn Button3.

Lặp qua các lựa chọn

Ở đây, chúng tôi sẽ tạo ra một cơ chế cho phép bạn lặp qua các lựa chọn vô tận. Trong bố cục mẫu, bạn có thể chọn Button1 bằng cách nhấn xuống trong khi Button3 được chọn và bạn có thể chọn Button3 bằng cách nhấn lên trong khi Button1 được chọn.

Điều khiển này được thực hiện trong một kịch bản. Đây là một kịch bản có mục đích chung có thể được sử dụng với một số lượng nhỏ các mô tả và có thể được sử dụng như trong các cảnh khác. Thay vào đó, các hạn chế sau đây được áp dụng:

  • Bạn chỉ có thể di chuyển lên xuống theo một hướng.
  • Áp dụng cho tất cả Selectable hiện có trong đối tượng được chỉ định

Do đó, mục tiêu sử dụng bị giới hạn ở các menu được chọn bằng cách cuộn lên và xuống, nhưng sẽ rất hữu ích nếu bạn giới hạn bản thân trong bố cục đó. Nhân tiện, nó bị giới hạn ở trên cùng và dưới cùng, nhưng nếu bạn sửa đổi tập lệnh một chút, bạn có thể làm cho nó giới hạn ở bên trái và bên phải.

Tạo tập lệnh trong dự án của bạn. Bạn có thể đặt tên cho nó bất cứ điều gì, nhưng tôi sẽ SelectLoop để nó là .

Kịch bản trông như thế này:

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

Những gì chúng tôi đang làm là thực hiện các cài đặt sau cho hành vi navigation lựa chọn khóa .

  • Nhấn phím lên để chọn đối tượng trước đó và chọn đối tượng cuối cùng để chọn đối tượng đầu tiên.
  • Nhấn phím xuống để chọn đối tượng tiếp theo hoặc chọn đối tượng đầu tiên nếu đó là đối tượng cuối cùng.

Nhân tiện, thứ tự của đối tượng này (Có thể chọn) phụ thuộc vào thứ tự của hệ thống phân cấp. Sắp xếp chúng theo thứ tự bạn muốn chúng được chọn trong hệ thống phân cấp.

Sau khi lưu tập lệnh, hãy đính kèm nó dưới dạng một thành phần. Tập lệnh này sẽ được áp dụng cho trong đối tượng Selectable đính kèm, vì vậy lần Canvas này chúng ta sẽ đính kèm vào .

Hãy thử di chuyển nó và xem liệu bạn có thể di chuyển nó giữa Button1 và Button3 bằng một tổ hợp phím hay không.