[DB-AL] Tableau avec tri de données dans Unity3D

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Répondre
notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

[DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 29 Déc 2018 04:35

Bonjour à tous,

Je travail actuellement sur un petit jeu 2D, type RPG, de gestion de héros. Un de mes module n'avance pas et je souhaiterais obtenir de votre aide à ce sujet :

- J'ai une assez grande quantité de données à lister et afficher dans des tableaux, dans Unity (Héros, Items, Quêtes, Scores, Succès, etc).
- Mon système actuel, récupère les données depuis un fichier BDD SQLite, les stock dans une List<T> et les affiche par instanciation de préfab dans un GridLayout. Au final, cela me crée un tableau statique, avec plusieurs données sous forme de lignes.
- J'effectue un trie des données à volonté/direct dans Unity (Bouton), depuis la fonction List.Sort(); et List.Revert(); en détruisant et recréant le tableau avec les nouveaux paramètres retournés ( -1 ou 1 ).

=> C'est fonctionnel mais très moche. Et je pense, très mal conçu / optimisé.

-
A terme, mon objectif est de créer dans Unity3D, le même tableau d'items que le site "WowHead".
Qui liste les Items dans un tableau sous plusieurs pages (Si besoin) et permet le tri visuel depuis les entêtes du tableau (Alphabétique pour le Nom, Croissant/Décroissant pour les valeurs numériques, etc).
-

Je souhaiterais connaitre vos avis à ce sujet. Mon système doit sans-doute être repensé / modifié.
N'hésitez pas à me faire part de vos lumières et idées, ou tout autre élément me permettant d'étudier de nouvelles pistes et fonctions au quelles je n'aurais pas pensé. (En ce moment je planche sur DataTable et le .Sort = "occr desc";)

Merci à tous !
Respectueusement,
Notoxy

PS : A titre d'information, je me suis basé sur le Tutoriel de inScope Studios - Unity tutorial: High score with SQLite sur Youtube et je l'ai adapté à mes besoins. Une bonne partie du Code de ce module viens de ce tutoriel, il n'est donc pas de moi à 100%.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par Alesk » 30 Déc 2018 13:35

Salut !

Je ne comprends pas bien pourquoi tu as besoin de détruire le tableau... Pourrait-on voir ton code stp ?

notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 02 Jan 2019 23:22

Bonjour,

Merci pour ta réponse :)
Désolé pour le de temps de retours, je ne suis pas chez moi actuellement ^^
Je détruit l'actuel pour créer le trié. Je n'ai pas trouvé de solution pour trier en live (Actualiser l'affichage) ou depuis les enfants.

Contenu caché
Vous devez être inscrit et connecté sur ce forum pour voir le contenu caché.



Contenu caché
Vous devez être inscrit et connecté sur ce forum pour voir le contenu caché.


Actuellement, mes données sont affichées comme ceci (Affichage moche et temporaire de tests ^^) :

Image

Et je souhaiterais pouvoir tirer mes données en temps réel depuis les entêtes ci-dessous :

Image

J'arrive à trier mes données numériques (Pas encore les string). Il ne me manque que de trouver une solution pour actualiser et ranger les éléments visuellement. J'ai trouvé la fonction "SetSiblingIndex"', mais je n'ai pas encore réussi à l'adapter à mon système.

Merci d'avance,
Respectueusement,
Notoxy.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par Alesk » 03 Jan 2019 22:34

Alors, il me manque une précision : de quel tableau parles-tu concernant la destruction ? la liste de données dans le code ou bien le tableau affiché à l'écran ?

notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 08 Jan 2019 03:22

Alesk a écrit :
03 Jan 2019 22:34
Alors, il me manque une précision : de quel tableau parles-tu concernant la destruction ? la liste de données dans le code ou bien le tableau affiché à l'écran ?

En résumé, j'essaye de trier les données (a>z et z>a) et de les actualiser sur l'écran ^^
- J’effectue le tri, puis pour mette à jour les données, n'ayant pas trouvé de moyen pour "actualiser" l'affichage, je détruis les prefabs enfant triés/affichés en a>z de ma liste et je affiche les nouveaux triés en z>a ^^
Dernière édition par notoxy le 08 Jan 2019 11:23, édité 3 fois.

notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 08 Jan 2019 04:22

Désolé du doublon, j'ai pas pensé à éditer mon message du dessus :/

Mon systeme est bancale, mais l'objectif final est de recréer ceci sous Unity (wowhead/items) :
(L'objectif est de rendre le système fonctionnel, je peux me lancer sur une autre piste/code si quelqu'un à une idée)
Image

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par Alesk » 08 Jan 2019 12:00

Alors... Idéalement il faut toujours décorréler les données et leur affichage, c'est plus flexible.

Dans ton cas, tu n'as pas besoin de détruire les instances de prefabs, juste mettre à jour leur contenu.
Il faut que tu créés ton panneau d'affichage avec des prefabs vides/non renseignés, et ensuite les mettre à jour avec tes données triées.

Ainsi tu n'as jamais besoin de les détruire, tu mets juste à jour ce qu'ils affichent.

Et bien sûr, si d'un affichage à l'autre, tu as des prefabs en trop car la nouvelle liste que tu veux afficher est plus courte que la précédente, il suffit de masquer les prefabs en trop, sans les détruire, car il pourront être réutilisés plus tard.
Et si jamais la nouvelle liste à afficher est plus longue, tu as juste à créer quelques instances supplémentaires de ton prefab pour allonger la liste.

notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 10 Jan 2019 01:12

Merci, bonne idée !

Si j'ai bien compris, je peux créer par exemple une liste de 25 Prefabs manuellement (Y'a t'il une limite de Prefab maximum que unity peux gérer dans un même parent ? Car mes objets seront générés procéduralement et je risque d'en avoir pas mal a afficher.).
Par la suite, au lieux d'instancier des Prefab, je fait une boucle qui change les valeurs de chaque enfants (Nom, Puissance, etc) ?
Si j'ai besoin de plusieurs pages (trop de lignes), je peux afficher des tranches de 25 lignes par pages.

Là, je pensais faire un tri directement depuis les enfants (SetSiblingIndex) en fonction de leurs valeurs.
Il vaut mieux réécrire les données à chaque tri ou modifier l'ordre des enfants ?

Encore merci d'avance :)

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par Alesk » 10 Jan 2019 09:20

Yo !

Il la limite du nombre de prefabs est la quantité de mémoire dont tu disposes... donc ça veut dire beaucoup beaucoup beaucoup ;)

Pour ce qui est du tri, si tes résultats s'étalent sur plusieurs pages, il vaut mieux mettre à jour les données dans les prefabs affichés (car en fonction de ce sur quoi tu tries, des éléments d'autres pages pourraient apparaître dans la page courante).
S'il n'y a qu'une seule page, une réorganisation des enfants suffit.

Mais bon, autant ne garder qu'une seule méthode, c'est plus simple ;)

notoxy
Messages : 6
Inscription : 29 Déc 2018 03:45

Re: [DB-AL] Tableau avec tri de données dans Unity3D

Message par notoxy » 10 Jan 2019 17:16

Re !

Dac, c'est noté. Je vais bricoler quelques trucs de mon côté.
Encore merci pour les infos, je repasserais dès que j'ai trouvé une solution afin de noter le sujet en résolue ^^

Répondre

Revenir vers « (C#) CSharp »