Optimisation Canvas avec beaucoup d'éléments appli mobile

Questions à propos du GUI, y compris la partie script.
qwerty31
Messages : 30
Inscription : 15 Nov 2016 17:38
Contact :

Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par qwerty31 » 15 Août 2018 22:05

Bonjour à tous,

J'ai créé un jeu avec un Canvas contenant un très grand nombre d'éléments (plus de 2000, il s'agit en fait d'une grille de nombres), mais ce Canvas rend mon jeu très lent (moins de 15 fps sur mon mobile...). J'ai essayé de l'optimiser en réduisant la qualité de ses éléments mais sans succès. Je me demandais donc si vous aviez des idées afin que ce Canvas n'influe pas trop sur la vitesse de mon jeu ?

Merci d'avance.
Mon premier jeu (gratuit) sur Android, réalisé avec Unity3D, Touch'em All ! est disponible sur le Play Store. N'hésitez pas à le tester ! :hehe:

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

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par Alesk » 16 Août 2018 12:12

Salut,

Oui, faut tout refaire.

Bonne journée ! :diable:

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

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par Alesk » 16 Août 2018 12:17

Bon alors plus sérieusement :

La chose importante à savoir avec un canvas : tout les éléments qui sont intégré dans un canvas sont tous contenu dans un seul et même mesh.

Donc si on modifie un seul élément du canvas, ça implique de mettre à jour l'intégralité du mesh !

La solution :
Il faut utiliser plusieurs canvas, pour séparer les éléments statiques et les éléments qui se modifient au fil du temps.

Et pour les éléments qui subissent des modifications, il faut encore voir jusqu'à quel point on doit les dissocier en différent canvas.

En gros, il faut limiter au maximum le nombre d'éléments changeants tout seul au sein d'un même canvas.

Si tout change tout le temps pas de problème, y'a pas le choix, par contre s'il y a un seul élément qui se balade au milieu d'autres immobiles, là il faut les séparer.

Bon courage !

Note : le lien dans ta signature a été invalidé par google...

qwerty31
Messages : 30
Inscription : 15 Nov 2016 17:38
Contact :

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par qwerty31 » 16 Août 2018 21:42

Hélas les éléments de ma grille sont tous potentiellement dynamiques, est-ce que je peux me permettre de créer quelques 2000 Canvas pour chaque élément de ma grille, ou je dois me débrouiller autrement ?

P.S : merci pour l'info de la signature, je crois avoir corrigé ça ;-)
Mon premier jeu (gratuit) sur Android, réalisé avec Unity3D, Touch'em All ! est disponible sur le Play Store. N'hésitez pas à le tester ! :hehe:

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par simonj » 16 Août 2018 23:51

Hello,

Peut être qu'il faut regarder un peu au delà de ce qui semble évident. Ca me semble étrange d'avoir un élément d'UI qui possède 2000 éléments.
Si c'est genre un menu avec 2000 boutons et qu'ils ne sont pas tous affichés à l'écran, alors il faut programmer un système qui te permet de créer uniquement ceux qui doivent être affichés à l'écran.
Si c'est du gameplay, alors il faut penser à créer un système qui ne passe pas par de l'UI. C'est assez facile de coder un script qui prends la taille de la caméra et créer plein de petits sprites positionnées en grille.

Dans tous les cas, ça ne me semble pas normal d'avoir 2000 éléments d'UI. Donc je veux bien que tu donnes quelques précision sur le contexte pour que l'on puisse imaginer une solution.

Clairement les canvas c'est fait pour afficher de l'UI, pas de la 2D (Je le sais car mon premier jeu est en full canvas et çà a été une horreur à optim').

qwerty31
Messages : 30
Inscription : 15 Nov 2016 17:38
Contact :

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par qwerty31 » 18 Août 2018 09:05

En fait plus précisément il s'agit d'une grille de nombres sur laquelle la caméra se déplace, on ne voit jamais tout les nombres en même temps mais j'ai utilisé l'UI pour pouvoir utiliser les UI Text et pouvoir modifier facilement ces nombres par script...
Mon premier jeu (gratuit) sur Android, réalisé avec Unity3D, Touch'em All ! est disponible sur le Play Store. N'hésitez pas à le tester ! :hehe:

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

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par Alesk » 18 Août 2018 10:58

Ok je vois.

Mais même si on ne les voit pas tous, s'ils font tous partie du même canvas, ça reste un seul mesh.
Tu peux tenter de diviser ça en plusieurs canvas plus petits, un grille intermédiaire, où tu les regroupes par zones carrées de 10x10 par exemple.
Ainsi, lorsque tu feras une modif sur un des éléments de ta grille, ça ne mettra à jour que la zone concernée, et pas toute la grille.
Je te recommande de coder un système qui te permet de gérer dynamiquement la taille de ces zones de regroupements (donc des canvas séparés), afin de pouvoir faire plusieurs tests rapidement et décider quelle est la taille idéale à partir de laquelle ça ne rame plus.

qwerty31
Messages : 30
Inscription : 15 Nov 2016 17:38
Contact :

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par qwerty31 » 18 Août 2018 17:26

D'accord, merci du conseil je vais essayer, mais je suppose que si je les laisse dans un Canvas plus grand ça va rien changer ?
Mon premier jeu (gratuit) sur Android, réalisé avec Unity3D, Touch'em All ! est disponible sur le Play Store. N'hésitez pas à le tester ! :hehe:

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par DevAmat » 18 Août 2018 19:07

Salut, j'ai une remarque/question. Pourquoi as tu décidé de tout faire via le Canvas? Ce n'est pas du tout adapté à priori.
Utilise des Sprites, une camera orthographique etc. Alors cela veux dire repenser ton application mais je pense que, de base, tu fais une grosse erreur de conception.

qwerty31
Messages : 30
Inscription : 15 Nov 2016 17:38
Contact :

Re: Optimisation Canvas avec beaucoup d'éléments appli mobile

Message par qwerty31 » 18 Août 2018 19:10

DevAmat a écrit :
18 Août 2018 19:07
Salut, j'ai une remarque/Question. Pourquoi as tu décidé de tout faire via le Canvas? Ce n'est pas du tout adapté à priori.
Utilise des Sprites, une camera orthographique etc. Alors cela veux dire repenser ton application mais je pense que, de base, tu fais une grosse erreur de conception.
Comme je l'ai dit, j'ai fait ce choix juste parce que je manipule une grille de nombres aux valeurs variables que je peux donc modifier facilement grâce au Component Text de l'UI, je ne voyais pas trop comment manipuler des nombres et les afficher facilement sans utiliser l'UI et le Text...
Mon premier jeu (gratuit) sur Android, réalisé avec Unity3D, Touch'em All ! est disponible sur le Play Store. N'hésitez pas à le tester ! :hehe:

Répondre

Revenir vers « L'interface GUI »