When I run the following code on my UI text
Color color = text.color;
color.a -= 1.0f;
text.color = color;
The alpha value of the text is immediately set to 0. How can I simply fade out the text.
If you are using Unity 4.6 and newer you can take advantage of CrossFadeAlpha and CrossFadeColor.
Example:
// fade to transparent over 500ms.
text.CrossFadeAlpha(0.0f, 0.05f, false);
// and back over 500ms.
text.CrossFadeAlpha(1.0f, 0.05f, false);
These two functions are a bit nicer to use since you don't have to worry about keeping track of anything. Just call it and go about your day.
You can use Coroutines:
Example:
public Text text;
public void FadeOut()
{
    StartCoroutine(FadeOutCR);
}
private IEnumerator FadeOutCR()
{
    float duration = 0.5f; //0.5 secs
    float currentTime = 0f;
    while(currentTime < duration)
    {
        float alpha = Mathf.Lerp(1f, 0f, currentTime/duration);
        text.color = new Color(text.color.r, text.color.g, text.color.b, alpha);
        currentTime += Time.deltaTime;
        yield return null;
    }
    yield break;
}
                        Color values in Unity work in a 0f..1f range, so:
0.0f is 0% (or 0/255 as shown in the editor)0.5f is 50% (or 127.5/255)1.0f is 100% (or 255/255)Subtracting by 1.0f is bringing the value to 0%. Try a different decrement like 0.1f:
color.a -= 0.1f;
                        Add this to the update method or a coroutine -
if(text.color != Color.clear) 
Color.Lerp (text.color, Color.clear, fadeSpeed * Time.deltaTime);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With