CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Unity] Inventaire (list) et scroll.

Ibadez38
Ibadez38
Niveau 47
02 février 2022 à 17:31:07

Bonjour,

J'ai fais un mini inventaire en forme de bar horizontal qui contient 11 (0 étant inclu) slot.
https://image.noelshack.com/fichiers/2022/05/3/1643818980-capture-d-ecran-2022-02-02-172245.png
Quand je scroll avec la souris et qu'aucun slot n'est encore sélectionné l'indicateur de sélection commence à sélectionner le slot 1 au lieu du slot 0
https://image.noelshack.com/fichiers/2022/05/3/1643819042-capture-d-ecran-2022-02-02-172342.png
ce qui est logique via ce code
https://image.noelshack.com/fichiers/2022/05/3/1643819066-capture-d-ecran-2022-02-02-171909.png scrollItemSlotNumber commencant à 0 avec le ++ il devient 1.

Pour remédier au problème j'ai crée cette fonction (que l'on retrouve sur le screen plus haut) qui boucle sur tous les slots pour voir si il y en a déjà un de sélectionné, si c'est pas le cas bas mon scroll au lieu de faire ++ il fait 0:
https://image.noelshack.com/fichiers/2022/05/3/1643819287-capture-d-ecran-2022-02-02-172559.png

Ce qui m'embête c'est que dès que je scroll ba ca lance une boucle, alors certes la liste contient que 12 emplacements mais je suppose que c'est pas ce qu'il y a de plus optimisé.

Avez vous une idée pour remédier au problème sans passer par une boucle?

ThetaTauTau
ThetaTauTau
Niveau 8
02 février 2022 à 18:05:39

Deux solutions:

  • Inititaliser scrollItemSlotNumber et ton UI dans Start()
  • Avoir une variable isSlotSelected à la place de ta fonction, qui vaut false par défaut et qui est mit à true dès qu'on change le numéro du slot

Avec la première solution tu auras toujours un slot de sélectionné, avec la deuxième tu peux ne rien sélectionner si besoin.

Et la prochaine fois utilise la balise <code> et le topic "J'aide les gens sur Unity".

panthere22
panthere22
Niveau 10
04 février 2022 à 13:53:09

Est ce que le fait que le slot affiché le soit seulement après avoir scrollé une première fois est le comportement précis que tu attends ?

Parce que sinon, beaucoup plus simple et ça reglerait ton problème, tu définis le slot 1 comme le slot selectionné au lancement de la scène, et donc le carré rouge autour est déjà présent avant même que l'utilisateur n'aie à scroller une première fois. Comme ça il peut déjà utiliser l'objet présent sur ce slot sans avoir à scroller, et si il scrolle vers la droite on arrive au slot d'après (comme sur ton screen) = logique.

Si tu ne veux pas que le slot sélectionné soit affiché avant que l'utilisateur aie scrollé une première fois, le mieux reste d'initialiser au début de la scène le slot courrant comme étant le solt "-1", comme ça quand on scrolle une première fois on arrive à 0 ?

Ibadez38
Ibadez38
Niveau 47
04 février 2022 à 16:58:05

@ThetaTauTau
Merci pour ta réponse je pense que je vais faire la solution 2. Je sais pas pourquoi je n'y ai pas pensé.

J'ai complètement zapé le fait qu'il y avait un topic dédié à unity, et pour les screen au début je pensais que c'était plus agréable à lire mais je pense peut être que switché de photo pour regarder le code est moins pratique.

@panthere22
Merci pour ta réponse. En effet, je veux que le slot soit affiché dès que le joueur scroll car en début de partie il n'a aucun item, je ne trouve pas ca logique que le slot 1 soit sélectionné :p

Si tu ne veux pas que le slot sélectionné soit affiché avant que l'utilisateur aie scrollé une première fois, le mieux reste d'initialiser au début de la scène le slot courrant comme étant le solt "-1", comme ça quand on scrolle une première fois on arrive à 0 ?

Je ne peux pas faire cette astuce, car quand il arrive à -1 la séléction repart à la fin du tableau.
Ca permet de scroller indéfiniment de gauche à droite comme ceci:

private void ScrollListItem()
    {
        if (scrollItemSlotNumber > inventorySlot.Length - 1)
            scrollItemSlotNumber = 0;

        if (scrollItemSlotNumber <= -1)
            scrollItemSlotNumber = inventorySlot.Length - 1;

        inventorySlot[scrollItemSlotNumber].ClearSelectedItem();

        inventorySlot[scrollItemSlotNumber].SetSelectedItem();
    }
ThetaTauTau
ThetaTauTau
Niveau 8
04 février 2022 à 17:24:10

les screen au début je pensais que c'était plus agréable à lire mais je pense peut être que switché de photo pour regarder le code est moins pratique.

C'est surtout que si c'est du texte on peut copier/coller pour corriger ton code ou le tester.
Et le fait que ce forum gère les images de façon merdique n'aide pas non plus.

Ibadez38
Ibadez38
Niveau 47
04 février 2022 à 17:32:21

Ah oui en effet.

Message édité le 04 février 2022 à 17:32:31 par Ibadez38
Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment