CanvasGroup controls a whole UI group.
group.alpha = 0f;
group.interactable = false;
group.blocksRaycasts = false;
Simple fade:
IEnumerator FadeIn()
{
group.alpha = 0f;
while (group.alpha < 1f)
{
group.alpha +=
Time.unscaledDeltaTime *
3f;
yield return null;
}
group.alpha = 1f;
}
Use unscaled time for UI that must animate while gameplay is paused.