UI - Text fade in word-by-word.

Just to clarify: it’s been a while since I’ve worked with Unity, so some of my ‘knowledge’ might be outdated!

I’ve got a Text object inside a panel, where the Text object stretches over the whole width and height of its parent panel. I want the content of the Text object to fade in word-by-word (not letter-by-letter).
This can (obviously?) not be achieved with just one Text object, since there’s just one alpha channel to work with (which controls the whole content). Thus I’ve come to the conclusion that I’d need two Text objects, where one object (the one inside the panel) contains all the text already displayed and the other one being used to display one word, fade it in, when faded in added to the first Text object content and repeating that process.
For this second Text object to be placed correctly, however, I’d need to get the width of the text that is already visible. I’ve got a hunch on how I’d get these values (via a ContentSizeFitter component?) but I’m absolutely uncertain if that’d work at all (I’ve been fiddling around with it for a bit and to no avail… yet).

The Text object containing all text does not scale with the content of it, so I cannot get the width/height of the Text object itself to process.

If you’ve got any idea or suggestion (or question, of course) as to how to go about this, I’d love you to the moon and back!
Cheers.

It can be done with a single UI.Text. The fading color here is red (#ff0000ff) … change it to your needs. Here is an example:

// UI.Text
public Text m_text;
float m_fade = 2.0f;
// Has to be min 0.1f or new word blinks one time (I don't know why)
float m_colorFloat = 0.1f;
int m_colorInt;
int m_counter = 0;
string m_show;
string[] m_wordArray;

private void Start () 
{
    string l_words = "Here is some text to be diplayed word by word.";
    m_wordArray = l_words.Split(' ');
} 

private void Update () 
{
    if ( m_counter < m_wordArray.Length )
    {
        if (m_colorFloat < 1.0f )
        {

            m_colorFloat += Time.deltaTime / m_fade;
            m_colorInt = (int)(Mathf.Lerp(0.0f, 1.0f, m_colorFloat) * 255.0f);
            m_text.text = m_show + "<color=\"#FF0000" + string.Format("{0:X}", m_colorInt) + "\">" + m_wordArray[m_counter] + "</color>";
    
        }
        else
        {
            m_colorFloat = 0.1f;
            m_show += m_wordArray[m_counter] + " ";
            m_counter++;
        }
    }
}