Skip to content

Charger un texte par lettre

Hi, voici un petit script rapide pour Unity qui vous permettra d’afficher un texte lettre par lettre dans vos UI Text. Une fois le texte entièrement chargé, si un nouveau est détecté, il le mettra à jour automatiquement de la même manière.

Il vous suffit simplement de copier/coller le code dans un nouveau script, le nommer LoadText.cs et le placer sur un component de type UI Text (dans vos Canvas)

A vous de l’adapter à vos besoins spécifiques !


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();

        TextInformations();
    }

    private void OnEnable() { uiTextCopy = null; }

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

        // Mise à jour du texte lettre par lettre
        else if (loadText && coroutineProtect) { uiText.text = showText; }

        // Vérification si un nouveau texte est chargé
        else if (!loadText && !coroutineProtect)
        {
            if (uiText.text != uiTextCopy) { TextInformations(); }
        }
    }

    private void TextInformations()
    {
        // On sauvegarde le texte et on vide l'UI Text
        uiTextCopy = uiText.text;
        showText = null;
        uiText.text = null;

        // On prépare le chargement du texte
        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;
    }

}

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s