本文へスキップ
UI Design

Cooldown and Hotbar UI Basics

A beginner-friendly guide to cooldown readability, hotbar layout, and making skill availability obvious without overloading the screen.

公開日: 2026-06-28#Cooldown#Hotbar#UI Design#Beginner

Quick Start

Start with a tiny working version

The first job of a cooldown UI is not to look advanced. It is to answer a simple question fast: can I press this now or not.

Build it in small code pieces

1. 値を用意する

Inspectorで変更できる値と表示先を置きます。

CooldownHotbarTutorial.cs
csharp
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float cooldownSeconds = 1f;
    [SerializeField] private float remainingSeconds = 2f;
    [SerializeField] private float hotbarSlot = 3f;

2. 状態を変える

ボタンを押した時に、1つだけ状態を進めます。

CooldownHotbarTutorial.cs
csharp
    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "スキル使用" : step == 1 ? "残り時間表示" : "再使用可能";
        if (statusText != null)
        {
            statusText.text = $"{label}\ncooldownSeconds={cooldownSeconds:0.##}\nremainingSeconds={remainingSeconds:0.##}\nhotbarSlot={hotbarSlot:0.##}";
        }

3. 画面に表示する

変わった結果を画面に出して確認します。

CooldownHotbarTutorial.cs
csharp
        if (statusText != null)
        {
            statusText.text = $"{label}\ncooldownSeconds={cooldownSeconds:0.##}\nremainingSeconds={remainingSeconds:0.##}\nhotbarSlot={hotbarSlot:0.##}";
        }
        Debug.Log($"クールダウンとホットバー: {label}");

Complete script

CooldownHotbarTutorial.cs
csharp
using UnityEngine;
using TMPro;

public class CooldownHotbarTutorial : MonoBehaviour
{
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float cooldownSeconds = 1f;
    [SerializeField] private float remainingSeconds = 2f;
    [SerializeField] private float hotbarSlot = 3f;

    private int step;

    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "スキル使用" : step == 1 ? "残り時間表示" : "再使用可能";
        if (statusText != null)
        {
            statusText.text = $"{label}\ncooldownSeconds={cooldownSeconds:0.##}\nremainingSeconds={remainingSeconds:0.##}\nhotbarSlot={hotbarSlot:0.##}";
        }
        Debug.Log($"クールダウンとホットバー: {label}");
    }
}

Inspector

Connect the UI reference in the Inspector, then use the button to confirm each value changes.

Summary

What to take away

A beginner-friendly guide to cooldown readability, hotbar layout, and making skill availability obvious without overloading the screen.

The page is designed to help you move from reading to a small practical decision. Use the checklist above before jumping into the next related article.