Unity 6 / URP 向け「RenderTexture + RawImage 方式ミニマップ」完全版

Unity 6 と Universal Render Pipeline (URP) を使用したミニマップ実装の完全ガイドです。旧来の Viewport Rect 方式ではなく、RenderTexture と RawImage を組み合わせた、URP でも安定して動作する方法を解説します。


1. 想定環境

本記事で想定している環境は以下の通りです。

  • Unity バージョン: Unity 6.2 以上
  • テンプレート: 3D(URP)
  • パイプライン: Universal Render Pipeline (URP)
  • ビルドターゲット: PC / モバイル どちらでも可

シーン構成のゴール

完成時のシーン構成は以下のようなイメージになります。

Scene
 ├─ Ground          … 床
 ├─ Player          … カプセルなど
 ├─ Main Camera     … 画面全体を描画
 ├─ MiniMapCamera   … ミニマップ用カメラ(RenderTexture 出力)
 └─ Canvas
     └─ MiniMapRawImage … 右上に表示する UI

2. レイヤーの準備(MiniMap 専用レイヤー)

ミニマップに表示したいオブジェクトだけを表示するため、専用のレイヤーを作成します。

手順

  1. メニューから Edit → Project Settings… → Tags and Layers を開く
  2. Layers の空きスロット(例:User Layer 8)に MiniMap と入力して追加

レイヤーの使い分け

以後、ミニマップに映したいオブジェクトだけこのレイヤーを使います。

例:

  • Player(自機)→ MiniMap レイヤーに変更
  • 重要な敵やアイテム → MiniMap レイヤーに変更
  • 地面や背景 → Default のまま(ミニマップには映さない)

これにより、ミニマップカメラは必要なオブジェクトだけを描画でき、パフォーマンスも最適化されます。


3. ミニマップ用 RenderTexture を作る

ミニマップカメラの出力先となる RenderTexture を作成します。

手順

  1. Project ウィンドウで右クリック
  2. Create → Rendering → Render Texture を選択
  3. 名前を RT_MiniMap に変更

Inspector 設定

作成した RenderTexture を選択し、Inspector で以下のように設定します。

  • Size: 512 x 512(もしくは 256 x 256)
    • 高解像度が必要な場合は 512、軽量化重視なら 256
  • Color Format: R8G8B8A8_UNORM
    • 記事内では「Graphics Format」と表記される場合もありますが、Unity 6では「Color Format」として表示されます
  • Mipmap: オフ(チェックを外す)
  • Anti-aliasing: None
    • Unity 6では、ミニマップ用途では通常「None」で問題ありません
    • 必要に応じて「2x Multi Sampling」「4x Multi Sampling」などを選択できます

フォルダ構成例

Assets
 ├─ RenderTextures
 │   └─ RT_MiniMap.renderTexture
 └─ ...

4. MiniMapCamera を作成

ミニマップ専用のカメラを作成します。

手順

  1. Hierarchy → 右クリック → Camera で新規作成
  2. 名前を MiniMapCamera に変更

Camera コンポーネント設定

Inspector で以下のように設定します。

Camera(コンポーネント)

  • Render Type: Base
    • RenderTexture に出力するだけなので Overlay にする必要はありません
  • Projection: Orthographic(俯瞰ミニマップの場合)
  • Size: シーンに合わせて調整(例:20)
    • この値が大きいほど広範囲が表示されます
  • Culling Mask: MiniMap のみに変更
    • これにより、MiniMap レイヤーのオブジェクトだけが描画されます
  • Clear Flags: Solid Color
  • Background: 少し暗い色(#000000 〜 #202020 など)

Output(URP カメラの項目)

  • Output Texture: 先ほど作成した RT_MiniMap をドラッグ&ドロップ

Transform

  • Position: プレイヤーの真上になるように初期値をざっくり設定
    • 例:(0, 30, 0)
  • Rotation(90, 0, 0)(真上から見下ろす)

注意: 後でスクリプトで追従させるので、ここはおおよそで OK です。


5. Main Camera 側の設定

メインカメラは通常のカメラとして使用します。

設定内容

  • Render Type: Base
  • Culling Mask: Everything(お好みで MiniMap レイヤーも含めてよい・別にしたい場合は Default のみなど)
  • Output Texture: None(画面に直接描画)

重要: Camera Stacking は一切使いません。ミニマップは「別のカメラ → テクスチャ → UI」に完全に分離します。これにより、URP の制約に影響されず、安定して動作します。


6. ミニマップ UI(RawImage)を作る

ゲーム画面にミニマップを表示する UI を作成します。

Canvas の作成

  1. Hierarchy → 右クリック → UI → Canvas
  2. Render Mode: Screen Space – Overlay(デフォルトで OK)

RawImage の追加

  1. Canvas の子として UI → Raw Image を追加
  2. 名前を MiniMapRawImage に変更

RawImage 設定

  • TextureRT_MiniMap を設定
  • Color: White(デフォルト)
  • Raycast Target: オフ(クリック不要なら)

RectTransform 設定(右上に固定)

Inspector → RectTransform で以下を設定します。

  • アンカー: 右上にスナップ(preset で top-right を選択)
  • Pos X: -10(画面右から 10px 内側)
  • Pos Y: -10(画面上から 10px 内側)
  • Width: 256
  • Height: 256

これで、ゲームビュー右上にミニマップが表示されるようになります。


7. MiniMapCamera をプレイヤーに追従させるスクリプト

プレイヤーの動きに合わせてミニマップカメラを追従させるスクリプトを作成します。

スクリプトの作成

Assets/Scripts/MiniMap フォルダを作成し、MiniMapFollow.cs を作成します。

using UnityEngine;

namespace MiniMapSample
{
    /// <summary>
    /// プレイヤーの真上から追従するミニマップ用カメラ制御
    /// </summary>
    public class MiniMapFollow : MonoBehaviour
    {
        [Header("追従対象")]
        public Transform target;

        [Header("高さ(Y軸オフセット)")]
        public float height = 30f;

        [Header("回転追従")]
        public bool followRotation = false;

        void LateUpdate()
        {
            if (!target) return;

            // 位置:target の真上
            var pos = target.position;
            pos.y += height;
            transform.position = pos;

            // 回転:真上から見下ろす固定 or プレイヤー向きに合わせる
            if (followRotation)
            {
                var yRot = target.eulerAngles.y;
                transform.rotation = Quaternion.Euler(90f, yRot, 0f);
            }
            else
            {
                transform.rotation = Quaternion.Euler(90f, 0f, 0f);
            }
        }
    }
}

アタッチ方法

  1. MiniMapCamera を選択
  2. MiniMapFollow コンポーネントを Add Component
  3. Target に Player をドラッグ&ドロップ
  4. Height はシーンに合わせて 20〜50 くらいで調整
  5. プレイヤーの進行方向に合わせてミニマップを回転させたい場合は followRotation にチェックを入れる

8. Player の設定(レイヤーを MiniMap に)

ミニマップに表示したいオブジェクトのレイヤーを変更します。

手順

  1. Player を選択
  2. Inspector 上部の Layer を MiniMap に変更

その他のオブジェクト

必要に応じて、以下のオブジェクトも MiniMap レイヤーに変更します。

  • 敵キャラクター
  • 重要なアイテム
  • チェックポイント

地形の表示

地形を簡易的に見せたい場合は、床用の Quad / Plane を複製して MiniMap レイヤーにしても OK です。


9. オプション:ミニマップ ON/OFF トグル

キーボードやボタンでミニマップを隠したい場合のスクリプトです。

スクリプトの作成

Assets/Scripts/MiniMap/MiniMapToggle.cs を作成します。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;

namespace MiniMapSample
{
    /// <summary>
    /// ミニマップの表示/非表示を切り替える
    /// </summary>
    public class MiniMapToggle : MonoBehaviour
    {
        [Header("ミニマップ画像")]
        public RawImage miniMapImage;

        [Header("切り替えキー")]
        public Key toggleKey = Key.M;

        void Update()
        {
            if (Keyboard.current != null && Keyboard.current[toggleKey].wasPressedThisFrame)
            {
                if (!miniMapImage) return;
                miniMapImage.enabled = !miniMapImage.enabled;
            }
        }
    }
}

アタッチ方法

  1. Canvas など適当な GameObject にアタッチ
  2. miniMapImage に MiniMapRawImage をセット
  3. toggleKey で切り替えキーを変更可能(デフォルトは M キー)

10. 旧 Viewport Rect 方式との違いまとめ

旧方式(Viewport Rect + Overlay)の問題点

  • Built-in RP 時代の定石だった方式
  • URP / Unity 6 では Overlay に Viewport Rect が出ず、仕様的にも非推奨
  • Camera Stacking / Renderer の種類による制約が多い
  • プラットフォームによって挙動が異なる場合がある

新方式(RenderTexture + RawImage)の利点

  • URP / Unity 6 でも公式推奨に近い構成
  • Camera Stacking に依存しない
  • UI として扱えるのでレイアウト・アニメ・トグルが容易
  • 解像度やプラットフォームをまたいでも挙動が安定
  • 複数のミニマップを簡単に追加できる

11. 動作確認チェックリスト

ここまでの設定が正しく行われているか、以下の項目を確認してください。

基本動作

  •  再生すると、右上に MiniMapRawImage が表示されている
  •  Player を動かすと、ミニマップにも Player の位置が追従して見える
  •  必要なオブジェクトだけがミニマップに表示されている(MiniMap レイヤー)

動作確認方法

  1. Play モードに入る
  2. ゲームビューの右上にミニマップが表示されていることを確認
  3. Player を動かし、ミニマップ内の Player の位置が更新されることを確認
  4. MiniMap レイヤーに設定したオブジェクトだけが表示されることを確認

12. 発展的なカスタマイズ

基本実装が完了したら、以下のような機能を追加できます。

丸型ミニマップ

  • Image コンポーネントでマスク用のスプライトを用意
  • Mask コンポーネントを追加して丸型にクリップ

UI パネルの追加

  • ミニマップの周りに枠線や背景パネルを追加
  • タイトルテキストを表示

ズーム機能

  • ボタンで MiniMapCamera の Size を変更
  • スライダーで連続的にズームイン/アウト

マーカーの追加

  • ミニマップ上にアイコンを表示するシステム
  • 敵の位置や目的地を表示

まとめ

Unity 6 / URP 環境でのミニマップ実装は、RenderTexture + RawImage 方式が最も安定して動作します。Camera Stacking に依存せず、UI として扱えるため、カスタマイズも容易です。

本記事の手順に従って実装すれば、PC でもモバイルでも安定して動作するミニマップシステムが完成します。


参考リンク


本記事は Unity 6.2 / URP 環境で動作確認済みです。

訪問数 1 回, 今日の訪問数 1回

Unity,Unity6

Posted by hidepon