Guides / Unity UI System / UI System: Canvas, Buttons, and Text

Unity UI System: Canvas, Buttons, and Text

What is Unity UI?

Unity's UI system is a powerful tool for creating user interfaces in your games. It allows you to build menus, HUDs, buttons, and interactive elements that players will see and interact with.

Key Components:

  • Canvas - The foundation for all UI elements
  • UI Elements - Buttons, text, images, and other interface components
  • Event System - Handles user input and interactions
  • Layout System - Automatically arranges UI elements

Why Use Unity UI?

Unity's UI system offers several advantages:

  • Visual Editor - Create interfaces without coding
  • Responsive Design - UI adapts to different screen sizes
  • Event System - Easy handling of user interactions
  • Performance - Optimized for real-time rendering
  • Cross-Platform - Works on all Unity-supported platforms

Understanding the Canvas

The Canvas is the root object for all UI elements. Think of it as a "screen" where you place your interface elements.

Canvas Types

Screen Space - Overlay

  • Renders on top of everything
  • Always visible
  • Perfect for HUDs and menus
  • Most common choice

Screen Space - Camera

  • Renders in front of a specific camera
  • Can be affected by camera settings
  • Good for world-space UI

World Space

  • Renders as 3D objects in the scene
  • Can be affected by lighting
  • Perfect for in-game displays

Creating Your First UI

Step 1: Create a Canvas

  • Right-click in the Hierarchy
  • Go to UI > Canvas
  • Unity automatically creates an EventSystem
  • Your Canvas is ready to use

Step 2: Add UI Elements

Adding a Button:

  • Right-click on the Canvas
  • Go to UI > Button
  • Unity creates a Button with Text child
  • Customize the button in the Inspector

Adding Text:

  • Right-click on the Canvas
  • Go to UI > Text
  • Type your text in the Inspector
  • Adjust font, size, and color

Adding an Image:

  • Right-click on the Canvas
  • Go to UI > Image
  • Assign a sprite in the Inspector
  • Adjust size and position

Working with Buttons

Button Components

Button Component:

  • Interactable - Can the button be clicked?
  • Transition - How the button responds to interaction
  • Navigation - How to navigate between buttons

Button Events:

  • OnClick - What happens when clicked
  • OnPointerEnter - Mouse hover events
  • OnPointerExit - Mouse leave events

Creating Button Functionality

using UnityEngine;
using UnityEngine.UI;

public class ButtonController : MonoBehaviour
{
    public Button myButton;
    public Text buttonText;
    
    void Start()
    {
        // Add click listener
        myButton.onClick.AddListener(OnButtonClick);
    }
    
    void OnButtonClick()
    {
        Debug.Log("Button clicked!");
        buttonText.text = "Clicked!";
    }
}

Working with Text

Text Component Properties

Text Settings:

  • Text - The actual text content
  • Font - Which font to use
  • Font Size - Size of the text
  • Color - Text color
  • Alignment - How text is aligned

Advanced Settings:

  • Line Spacing - Space between lines
  • Rich Text - Support for formatting tags
  • Raycast Target - Can receive mouse events

Dynamic Text Updates

using UnityEngine;
using UnityEngine.UI;

public class ScoreDisplay : MonoBehaviour
{
    public Text scoreText;
    private int score = 0;
    
    void Start()
    {
        UpdateScoreDisplay();
    }
    
    public void AddScore(int points)
    {
        score += points;
        UpdateScoreDisplay();
    }
    
    void UpdateScoreDisplay()
    {
        scoreText.text = "Score: " + score.ToString();
    }
}

Layout System

Automatic Layouts

Horizontal Layout Group:

  • Arranges children horizontally
  • Automatically sizes elements
  • Perfect for button rows

Vertical Layout Group:

  • Arranges children vertically
  • Automatically sizes elements
  • Perfect for menus

Grid Layout Group:

  • Arranges children in a grid
  • Automatically sizes elements
  • Perfect for inventory systems

Layout Element Properties

Preferred Size:

  • Preferred Width - Desired width
  • Preferred Height - Desired height
  • Flexible Width - How much extra space to take
  • Flexible Height - How much extra space to take

Event System

How Events Work

The EventSystem handles all user input and interactions with UI elements.

Event Types:

  • Pointer Events - Mouse and touch interactions
  • Selection Events - Keyboard navigation
  • Drag Events - Dragging UI elements

Creating Interactive UI

using UnityEngine;
using UnityEngine.EventSystems;

public class InteractiveUI : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Mouse entered UI element");
    }
    
    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Mouse left UI element");
    }
}

Pro Tips for Better UI

1. Use Anchors for Responsive Design

  • Stretch - Element stretches with screen size
  • Center - Element stays centered
  • Corner - Element stays in corner

2. Optimize Performance

  • Use UI Culling for off-screen elements
  • Batch UI elements when possible
  • Avoid frequent updates to text

3. Create Consistent Styling

  • Use prefabs for repeated elements
  • Create themes for consistent colors
  • Use sprites for custom button styles

Common UI Patterns

Main Menu

  • Title - Game title text
  • Buttons - Start, Options, Quit
  • Background - Menu background image

HUD (Heads-Up Display)

  • Health Bar - Player health indicator
  • Score Display - Current score
  • Minimap - Small map display

Settings Menu

  • Sliders - Volume controls
  • Toggles - On/off switches
  • Dropdowns - Quality settings

Troubleshooting Common Issues

Issue 1: UI Not Visible

Symptoms: UI elements don't appear in game

Solution:

  • Check Canvas Render Mode
  • Verify UI elements are children of Canvas
  • Check if UI elements are outside camera view

Issue 2: Buttons Not Responding

Symptoms: Clicking buttons does nothing

Solution:

  • Ensure EventSystem is in scene
  • Check if Button is Interactable
  • Verify OnClick events are assigned

Issue 3: UI Scaling Issues

Symptoms: UI looks wrong on different screen sizes

Solution:

  • Use proper anchor settings
  • Set Canvas Scaler to Scale With Screen Size
  • Test on different aspect ratios

Next Steps

Now that you understand the basics:

  • Practice - Create simple menus and HUDs
  • Experiment - Try different UI elements
  • Learn - Study UI design principles
  • Build - Create a complete game interface

Resources

Ready to create amazing user interfaces? Start with simple menus and gradually work your way up to complex interactive systems!