Unity Canvas SetActive(true) works (visible in Hierarchy) but UI elements are not visible on screen
08:38 20 Jan 2026

I’m working on a simple 2D Flappy Bird–like game in Unity.

I have a Game Over Canvas with buttons and text.
The Canvas is disabled at start.
When the bird collides with an obstacle, I activate the Canvas via code.

The method is definitely called:

  • Debug.Log appears

  • The Canvas becomes active in the Hierarchy

  • No errors in Console

However, none of the UI elements (buttons, text, images) are visible on screen.

Here is the code:

public void GameOver()
{
    if (_canvas != null)
    {
        _canvas.SetActive(true);
        Debug.Log("Game Over Canvas Activated");
    }

    Time.timeScale = 0f;
}

What I’ve already checked:

  • The Canvas is activated correctly in the Hierarchy

  • No NullReferenceException

  • Time.timeScale = 0 is intentional

  • UI elements exist as children of the Canvas

But visually nothing appears.

What could cause a Canvas to be active but not render its UI elements?
Are there specific Canvas / RectTransform / Render Mode settings that could cause this?

unity 6.0

Canvas Render Mode: Overlay

Using TextMeshPro

Game is 2D

unity-game-engine