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

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
Avatar de l’utilisateur
WindFish
Messages : 9
Inscription : 28 Jan 2017 16:57

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

Message par WindFish » 30 Mai 2020 15:07

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 !
Développeur de jeu sur Unity. https://vilolaboratory.itch.io/
1er jeu (04/2020) : Anti-Zombie System, micro jeu de gestion de résistance contres des zombie
https://vilolaboratory.itch.io/anti-zombie-system

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

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

Message par Max » 30 Mai 2020 16:41

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 ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

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

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

Message par DevAmat » 01 Juin 2020 11:14

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.

Répondre

Revenir vers « (C#) CSharp »