[C#] Affichage d'un texte lettre par lettre

Cette section est destinée aux scripts partagés par la communauté. Chaque post est destiné à un script. Suivez bien les recommandations.
Nazarick
Messages : 60
Inscription : 03 Avr 2017 21:44

[C#] Affichage d'un texte lettre par lettre

Message par Nazarick » 21 Mai 2017 08:28

Hi,

Il ne me semble pas avoir trouvé de script dans ce style déjà posté. (Faut dire que chercher dans le forum avec les termes "lettre par lettre", j'avais le choix niveau résultat)

Donc un script assez basique qui affiche une lettre après l'autre le texte d'un component UIText. Normalement il ne reste que l'essentiel, c'est une version allégée du modèle que j'utilise pour l'affichage de mes dialogues donc j'ai passé un coup de savon sur le superflu.

Il suffit simplement de le glisser sur un UIText et il fait son travail tout seul. (la variable de vitesse est private, libre à vous de l'afficher sur l'inspecteur). De même, une fois que le texte est chargé entièrement et qu'un nouveau texte le remplace, il le mettra à jour automatiquement en affichant le tout lettre par lettre.

Améliorable selon les besoins mais dans l'état, fait son travail.


Code : Tout sélectionner

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Text))]
public class LoadText : MonoBehaviour
{

    private Text uiText;

    private float showSpeed = 0.05f;

    private string showText, uiTextCopy;

    private bool coroutineProtect, loadText;


    private void Start()
    {
        uiText = GetComponent<Text>();

        TextInformations();
    }

    private void OnEnable() { uiTextCopy = null; }

    private void Update()
    {
        if (loadText && !coroutineProtect)
        {
            StartCoroutine(LoadLetters(uiTextCopy));
            coroutineProtect = true;
        }

        else if (loadText && coroutineProtect) { uiText.text = showText; }

        else if (!loadText && !coroutineProtect)
        {
            if (uiText.text != uiTextCopy) { TextInformations(); }
        }
    }

    private void TextInformations()
    {
        uiTextCopy = uiText.text;
        showText = null;
        uiText.text = null;

        loadText = true;
        coroutineProtect = false;
    }

    private IEnumerator LoadLetters(string completeText)
    {
        int textSize = 0;

        while (textSize < completeText.Length)
        {
            showText += completeText[textSize++];
            yield return new WaitForSeconds(showSpeed);
        }

        coroutineProtect = false;
        loadText = false;
    }

}
PS : Stef ce serait possible d'avoir de véritable balise code à l'occasion ? Même en utilisant [ code = php] (sans espace hein) n'avoir que le vert ou le bleu, ça fait mal aux yeux ;)

Edit : Petit ajout de la fonction OnEnable() pour remettre à zéro uiTextCopy afin que si un texte est relancé (donc le même string qu'avant) il recharge correctement lettre par lettre le tout.
Dernière édition par Nazarick le 21 Mai 2017 11:03, édité 2 fois.

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

Re: [C#] Affichage d'un texte lettre par lettre

Message par Max » 21 Mai 2017 10:48

merci pour le partage ;)
Nazarick a écrit :PS : Stef ce serait possible d'avoir de véritable balise code à l'occasion ? Même en utilisant [ code = php] (sans espace hein) n'avoir que le vert ou le bleu, ça fait mal aux yeux ;)
je me permet de répondre. Avec Stef nous avons essayé plusieurs solutions pour avoir une coloration syntaxique des codes, on s'est bien pris la tête avec ça d'ailleurs. Mais entre celles qui sont bugguées et celles qui sont incompatibles avec le thème actuel, en final pour l'heure nous sommes dans l’impasse (comme toujours, si quelqu'un à d'autres tuyaux, nous sommes bien sûr preneur).
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

Nazarick
Messages : 60
Inscription : 03 Avr 2017 21:44

Re: [C#] Affichage d'un texte lettre par lettre

Message par Nazarick » 21 Mai 2017 10:58

Max a écrit :merci pour le partage ;)
Nazarick a écrit :PS : Stef ce serait possible d'avoir de véritable balise code à l'occasion ? Même en utilisant [ code = php] (sans espace hein) n'avoir que le vert ou le bleu, ça fait mal aux yeux ;)
je me permet de répondre. Avec Stef nous avons essayé plusieurs solutions pour avoir une coloration syntaxique des codes, on s'est bien pris la tête avec ça d'ailleurs. Mais entre celles qui sont bugguées et celles qui sont incompatibles avec le thème actuel, en final pour l'heure nous sommes dans l’impasse (comme toujours, si quelqu'un à d'autres tuyaux, nous sommes bien sûr preneur).
De rien ;)

Pour la coloration syntaxique pas de problème je peux comprendre. Je regarderais à l'occasion si je trouve quelques plugin pour phpbb qui pourrait être intéressant (et si pas déjà essayé par le passé).

Répondre

Revenir vers « Scripts »