Page 1 sur 1

[DB-AL] Différence entre While dans Coroutine et Update

Publié : 30 Mai 2020 15:07
par WindFish
Hello tous,

Ma question peut sembler bète mais, souhaitant faire déplacer un bonhomme au click (type STR/Wargame), je me retrouve avec ce constat :

- lorsque le rendu rame, utiliser le UPDATE est naze : en effet, le déplacement du bonhomme est fonction du nombre d'image par seconde et est donc lent (même si cette convention est connu des joueurs)
- Si j'utilise une coroutine contenant un while avec un délai d'attente, je me dis que je lance un autre thread alors que Update sollicite déjà naturellement le proc.

Qu'en pensez-vous ?
Il y a t-il une bonne raison, pour déplacer un perso, de préférer une méthode qu'une autre ?

D'avance merci !

Re: [DB-AL] Différence entre While dans Coroutine et Update

Publié : 30 Mai 2020 16:41
par Max
Bonjour,

Unity n'est pas de base multithread (ou alors il faut passer par le nouveau système DOTS, et son Job System).
Donc attention avec les coroutines, car même si cela y ressemble, ce ne sont pas des threads à proprement parlé.
Et même si elles ne sont pas dépendante du framerate, elles restent néanmoins dépendante de la boucle principale.

Après techniquement, en passant par une coroutine tu auras peut-être l'impression d'un contrôle du temps (pour aller d'un point A vers un point B), mais niveau rendu l'impression de saccades perdurera à mon avis. D’ailleurs dans l'Update, c'est pour cela qu'il est conseillé de lier les opérations sur les transforms au deltaTime. Cela n'évitera pas une chute de fps, mais les valeurs de déplacements/rotation seront constant dans le temps.

Après, pourquoi cela rame ? Là est peut-être la vrai piste à creuser ;)

Re: [DB-AL] Différence entre While dans Coroutine et Update

Publié : 01 Juin 2020 11:14
par DevAmat
Salut,

Le plus simple pour toi est de régler ton problème d’optimisation.
Je ne sais pas ce que tu as exactement comment "rendu", mais si tu as un décalage entre tes déplacements et le rendu de ton décors par exemple cela peut être très étrange pour l'utilisateur.
Tu pourrais nous en dire plus.