Parcourir la sélection d’objets de l’interface utilisateur

Page mise à jour :
Date de création de la page :

Environnement de vérification

Windows
  • Fenêtres 11
Éditeur Unity
  • 2020.3.25f1

Conditions préalables à cette astuce

Les réglages suivants ont été effectués à l’avance comme condition préalable à l’explication de ces conseils.

référence

Déploiement d’exemples d’objets d’interface utilisateur

Placez le bouton sur le canevas comme suit : L’objet sélectionné s’affiche en vert pour plus de clarté.

Vous ne pouvez sélectionner que les objets qui se trouvent dans la direction sélectionnée.

Lorsque vous placez un objet d’interface utilisateur, vous pouvez d’abord appuyer sur les touches fléchées d’un clavier ou d’une manette de jeu pour sélectionner l’objet d’interface utilisateur dans la direction spécifiée. C’est très intuitif et facile à comprendre, donc je ne pense pas que vous ayez besoin de vous embêter à modifier les paramètres.

Cependant, dans une disposition de type menu, il n’est pas possible d’effectuer une opération de boucle de sélection telle que « revenir en haut lorsque vous appuyez sur le bas alors que le bas est sélectionné » par défaut.

Dans la figure ci-dessus, vous ne pouvez pas sélectionner Button1 en appuyant sur Button3 alors que Button3 est sélectionné. Bien sûr, si vous appuyez vers le haut alors que le bouton 1 est sélectionné, vous ne pourrez pas sélectionner le bouton 3.

Parcourir les sélections en boucle

Ici, nous allons créer un mécanisme qui vous permet de parcourir les sélections à l’infini. Dans l’exemple de mise en page, vous pouvez sélectionner Button1 en appuyant sur la touche enfoncée pendant que Button3 est sélectionné, et vous pouvez sélectionner Button3 en appuyant sur la touche up alors que Button1 est sélectionné.

Ce contrôle se fait dans un script. Il s’agit d’un script à usage général qui peut être utilisé avec un petit nombre de descriptions et peut être utilisé tel quel dans d’autres scènes. Au lieu de cela, les restrictions suivantes s’appliquent :

  • Vous ne pouvez vous déplacer de haut en bas que dans une seule direction.
  • S’applique à tous ceux Selectable qui existent sous l’objet spécifié

Par conséquent, la cible d’utilisation est limitée aux menus qui sont sélectionnés en faisant défiler vers le haut et vers le bas, mais c’est très utile si vous vous limitez à cette disposition. D’ailleurs, il est limité au haut et au bas, mais si vous modifiez un peu le script, vous pouvez le limiter à gauche et à droite.

Créez un script dans votre projet. Vous pouvez le nommer comme vous le souhaitez, mais je vais SelectLoop le laisser comme .

Le script ressemble à ceci :

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

Ce que nous faisons, c’est effectuer les réglages suivants pour le comportement navigation de sélection des touches.

  • Appuyez sur la touche Haut pour sélectionner l’objet précédent, puis sélectionnez le dernier objet pour sélectionner le premier objet.
  • Appuyez sur la touche bas pour sélectionner l’objet suivant, ou sélectionnez le premier objet s’il s’agit du dernier objet.

D’ailleurs, l’ordre de cet objet (Sélectionnable) dépend de l’ordre de la hiérarchie. Organisez-les dans l’ordre dans lequel vous souhaitez qu’ils soient sélectionnés dans la hiérarchie.

Après avoir enregistré le script, attachez-le en tant que composant. Ce script sera appliqué dans l’objet Selectable attaché , donc cette fois-ci Canvas , nous allons attacher à .

Essayez de le déplacer et voyez si vous pouvez le déplacer entre Button1 et Button3 en appuyant sur une touche.