[RESOLU] Unity et Système de dialogue - Changer de couleur en temps réel

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Répondre
Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

[RESOLU] Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 24 Juin 2019 15:16

Bonjour à tous !

En train de terminer un petit système de dialogue sur unity je rencontre un petit problème concernant l'écriture du texte en temps réel (actuellement j'utilise TextMesh Pro mais le problème est similaire avec le texte de base d'unity).

Image

Comme le montre l'image (une vidéo aurait été plus explicite :/ ), lorsque unity écrit lettre par lettre le texte, il ne reconnait pas directement les changement de caractères. Ainsi on voit une intégration standard du texte avant que la mise à jour vienne modifier correctement l'ensemble.

Savez vous si il est possible de résoudre ce problème afin d'empêcher une lecture maladroite de l'ensemble ?

Merci.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par boubouk50 » 24 Juin 2019 15:29

Salut,
tu essaies d'écrire le texte lettre par lettre? Et du coup, les balises avec?
Si c'est le cas, je pencherai pour ne pas intégrer les balises directement dedans, mais de les remplacer par un caractère distinct. Ensuite, à l'affichage, tu testes le caractères et le remplaces par la balise entière.
La table ASCII dispose de plein de caractères inutilisés.
A la rencontre d'un caractère spécial, intègre les balises ouvrantes et fermantes puis vient écrire au milieu en insertion, jusqu'à arriver jusqu'au caractère spécial de fermeture, par exemple.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 26 Juin 2019 10:36

Merci boubouk pour ta réponse.

Je vois la logique d'un tel fonctionnement. Je vais checker ça sous peu afin de voir comment je pourrais réaliser la chose.

Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 26 Juin 2019 15:42

Hello !

Concernant la logique que tu m'as conseillée, le code fonctionne totalement (en remplaçant un caractère par une string à l'affichage). Le problème, c'est que si l'effet de masque est bien moins prononcé, il subsiste toujours (vu que le caractère de substitution apparait).

Vu que tu parle du tableau ASCII, existe-il un tableau répertoriant tout les caractères n'en faisant pas partie ? (car les possibilités vus sur notre clavier sont assez floues). De plus si cela peut marcher dans l'absolu, unity m'affiche toujours une erreur lorsque je lui met un caractère spec à afficher en dialogue (ä / ö ...). Contrairement à une écriture directe.

Ou sinon il faut que je trouve comment masquer certains caractères à l'affichage...

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par boubouk50 » 26 Juin 2019 16:00

PolyGamedev a écrit :
26 Juin 2019 15:42
Le problème, c'est que si l'effet de masque est bien moins prononcé, il subsiste toujours (vu que le caractère de substitution apparait).

unity m'affiche toujours une erreur lorsque je lui met un caractère spec à afficher en dialogue (ä / ö ...). Contrairement à une écriture directe.

Ou sinon il faut que je trouve comment masquer certains caractères à l'affichage...
Je ne comprends pas ces deux points. As-tu une image, un exemple?
est-ce le rafraichissement qui fait ça?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 26 Juin 2019 16:35

Bien sur, voici :

https://www.noelshack.com/2019-26-3-156 ... -frame.png

:arrow: la ligne de string tout en haut est issu d'un CSV. Celle du dessous c'est les erreurs affichées lors de la lecture.

Est la lecture de par CSV qui pose problème ?

En fait, la différence n'est pas énorme (découpage frame par frame) mais à vu d’œil ça se voit. A ce niveau c'est sans doute la latence et je pense pas qu'on puisse faire grand chose.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par boubouk50 » 26 Juin 2019 16:46

Concernant les erreurs de console, c'est lié au code. Tu essaies de lire un élément d'un tableau en dehors de son domaine. Il faudrait peut-être la corriger pour être sur que le résultat ne soit pas lié à cela.

Par contre que vient faire ce z?
Est-ce possible d'avoir ton code pour comprendre la mise en place?

Si tu lis à partir d'un CSV, tu n'as pas forcément besoin de faire de cette manière, mais de stipuler la couleur dans un champ spécifique. Par ex:
1;Ecureuil;Squirrel;rouge;Salut Castor!;blanc;Quoi de neuf?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 26 Juin 2019 17:21

Ok autant pour moi.

En fait le "z" vient du même csv (il remplace le "ö" lorsque le test marche"), j'ai juste mis la ligne suivante pour montrer que le code ne marche pas avec tel type de caractère.

Je peut comprendre le problème de code et de tableau mais je vois pas pourquoi, vu que le code fonctionne de manière suivante :

Script 1 (dans un autre GameObject) = Lit les données du CSV
Script 2 = Stock les données du CSV et l'écrit dans les "sentences". Cela avant d'écrire mot par mot le texte.
Script 3 = Change tel caractère par tel autre.


Image

La méthode fonctionne tout le temps sauf avec un caractère spécifique.

Pour définir la couleur dans le CSV, cela devrait marcher... mais vu que le texte peut être entre découpé (Normal/Color/Normal) et que j'ai le texte Fr + Eng de stock, ça va être la chienlit à programmer (ça force aussi à savoir combien de mot en couleur on veut avoir dans l'ensemble == 2/4/6 lignes de textes différentes pour 1 sentence...).


NOTE : ne tiens pas compte des balises dans l'inspecteur. Le script remplie de nouveau les Array si le lien avec le CSV est fait (AffectCSV).

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par boubouk50 » 27 Juin 2019 09:08

Hum... et pourquoi pas tout traiter en amont? Découper la string complète en plein de morceaux dans une liste par exemple.
"Bonjour <b>l'ami</b>!, <color=red>Que fais-tu ici?</color>"
devient une list/array de string avec un découpage par morceau à afficher
B, o, n, j, o, u, r, , <b>l, ', a, m, i, </b>!, ,, <color=red>Q, u, e, , f, a, i, s, -, t, u, , i, c, i, ?, </color>
Si toutes les balises commencent par < et se terminent par >, c'est facile de découper. La classe String offre de nombreuses méthodes pour y arriver facilement.
https://docs.microsoft.com/en-us/dotnet ... .8#methods
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
PolyGamedev
Messages : 16
Inscription : 06 Oct 2018 22:11
Localisation : Lyon, France
Contact :

Re: Unity et Système de dialogue - Changer de couleur en temps réel

Message par PolyGamedev » 28 Juil 2019 17:24

Bonsoir,

Je sais que le message date un peu, mais je tenais à répondre à l'ensemble afin de clore le sujet.

Après quelques modifications externes, je suis arrivé à mes fins en utilisant un système d’insertion du texte (en fonction de la taille du texte) . Un peu plus de paramétrage à l'origine que de tout mettre dans le CSV mais cela me paraissait moins compliqué et abstrait à réaliser. :)

Toutefois, merci Boubouk pour ton aide sur ce post !

Répondre

Revenir vers « Unity le logiciel »