本文へスキップ
Co-op Play Design

Ping wheel and teammate marker UI design guide

Learn how to structure pings, teammate markers, and short co-op notifications so players can read priority fast without turning the screen into noise.

公開日: 2026-07-09#Co-op UI#Ping Systems#Teammate Markers#Beginner

Quick Start

Start with a tiny working version

Co-op games depend on fast shared intent. Players need lightweight ways to say danger, gather here, help me, or follow this goal.

Build it in small code pieces

1. 値を用意する

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

PingWheelTutorial.cs
csharp
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float pingType = 1f;
    [SerializeField] private float markerSeconds = 2f;
    [SerializeField] private float teammateDistance = 3f;

2. 状態を変える

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

PingWheelTutorial.cs
csharp
    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "ピン種類を選ぶ" : step == 1 ? "味方へ送る" : "画面に残す";
        if (statusText != null)
        {
            statusText.text = $"{label}\npingType={pingType:0.##}\nmarkerSeconds={markerSeconds:0.##}\nteammateDistance={teammateDistance:0.##}";
        }

3. 画面に表示する

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

PingWheelTutorial.cs
csharp
        if (statusText != null)
        {
            statusText.text = $"{label}\npingType={pingType:0.##}\nmarkerSeconds={markerSeconds:0.##}\nteammateDistance={teammateDistance:0.##}";
        }
        Debug.Log($"ピン通知と味方マーカー: {label}");

Complete script

PingWheelTutorial.cs
csharp
using UnityEngine;
using TMPro;

public class PingWheelTutorial : MonoBehaviour
{
    [SerializeField] private TextMeshProUGUI statusText;
    [SerializeField] private float pingType = 1f;
    [SerializeField] private float markerSeconds = 2f;
    [SerializeField] private float teammateDistance = 3f;

    private int step;

    public void NextStep()
    {
        step = (step + 1) % 3;
        var label = step == 0 ? "ピン種類を選ぶ" : step == 1 ? "味方へ送る" : "画面に残す";
        if (statusText != null)
        {
            statusText.text = $"{label}\npingType={pingType:0.##}\nmarkerSeconds={markerSeconds:0.##}\nteammateDistance={teammateDistance: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

Learn how to structure pings, teammate markers, and short co-op notifications so players can read priority fast without turning the screen into noise.

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.