「別のカメラが映した映像を、UIや3Dオブジェクトに貼りたい」——ミニマップ、バックミラー、監視カメラのモニター、キャラの立ち絵ポートレート、そしてポータルの向こうの景色まで。これらはすべて Render Texture という1つの仕組みが入口です。カメラの映像を「画面」ではなく「テクスチャ」に描き込み、それを好きな場所に貼れる——そう考えると、応用の広さが見えてきます。
この記事では、Render Textureとは何か から、Camera → Render Texture → RawImage / Material という基本の流れ、定番の 見下ろしミニマップ の作り方、鏡や監視カメラへの応用、そして 毎フレーム描画の負荷対策 までを解説します。
この記事でわかること
- Render Textureとは(カメラ出力を画面でなくテクスチャに描く)
- 基本の流れ:Camera → Render Texture → RawImage / Material
- 見下ろしミニマップ の作り方(プレイヤー追従・北固定)
- 鏡・監視カメラ への応用(Materialに貼る)
- 毎フレーム描画の負荷対策(解像度・更新頻度・無効化)
動作確認環境: Unity 2022.3 LTS / Unity 6
Render Textureとは
普段、カメラの映像は 画面(ディスプレイ) に映ります。Render Textureを使うと、その映像を画面の代わりに テクスチャ(画像アセット) に描き込めます。一度テクスチャになれば、あとはUIに貼るのも、3Dオブジェクトの表面に貼るのも自由自在です。

ポイントは 「画面に映すカメラ」とは別に、テクスチャ用の専用カメラを用意する ことです。メインカメラはこれまで通りプレイヤー視点を画面に映し、追加した専用カメラが「ミニマップ用の見下ろし映像」や「鏡に映る映像」をテクスチャに描き込みます。
Project ビューで右クリック → Create > Render Texture でアセットを作成し、専用カメラの Target Texture にそれを割り当てるだけ。これで、そのカメラの出力先が画面からテクスチャに切り替わります。
基本の流れ:Camera→Render Texture→表示
Render Textureの使い方は、どんな用途でも共通の3ステップです。
- Render Textureアセットを作る:
Create > Render Texture。解像度(例: 256×256、512×512)を設定する - 専用カメラのTarget Textureに割り当てる: 映したい対象を捉えるカメラを用意し、そのInspectorの
Target Textureに手順1のRender Textureをセットする - 貼り先に表示する: 出来上がったテクスチャを、UIなら RawImage、3Dオブジェクトなら Material に貼る
ここで最重要の注意点があります。 UIに表示するときは、Image ではなく RawImage を使う ことです。通常の Image はSprite専用でRender Textureを直接扱えません。RawImage は Texture をその まま貼れるので、Render Textureの表示にはこちらを使います。
[ミニマップ用カメラ] --Target Texture--> [Render Texture] --貼る--> [RawImage(UI)]
\--貼る--> [Material(鏡・モニター)]
3Dオブジェクトに貼る場合は、Materialを作り、その Albedo(またはEmission)テクスチャにRender Textureを割り当てて、鏡やモニターのメッシュに適用します。
実践:見下ろしミニマップを作る
Render Textureのいちばん定番の使い道が ミニマップ です。RPGの全体マップ、TPSの周辺レーダー、ストラテジーの戦況表示——どれもこの構成で作れます。

作り方はシンプルです。 プレイヤーの真上に見下ろしカメラを置き、その映像をRender Texture経由でRawImageに映す だけです。
- 見下ろしカメラを追加: プレイヤーの真上に配置し、
RotationのXを90度にして真下を向かせる。ProjectionをOrthographic(平行投影)にすると、遠近感のない地図らしい見た目になる - Render Textureを割り当て: このカメラの
Target TextureにRender Textureをセット - RawImageに表示: Canvas上にRawImageを置き、その
TextureにRender Textureを割り当て、画面隅に配置する - プレイヤーに追従: カメラをプレイヤーの子にするか、スクリプトで位置だけ追従させる(回転は追従させないと「北固定」のマップになる)
using UnityEngine;
// ミニマップカメラをプレイヤーの真上で追従させる(向きは固定)
public class MinimapCamera : MonoBehaviour
{
[SerializeField] private Transform player;
[SerializeField] private float height = 20f; // プレイヤーの頭上からの高さ
void LateUpdate()
{
// プレイヤーの真上heightぶんに位置だけ合わせる(回転は変えない=北が常に上)
Vector3 pos = player.position;
pos.y += height;
transform.position = pos;
}
}
ポイントは2つです。 「回転は追従させない」(位置だけプレイヤーに合わせ、カメラの向きは固定すると「北が常に上」の見やすいマップになる。プレイヤーの向きに回すタイプもあるが、まずは固定が簡単)と、 「Orthographicで地図らしく」(平行投影にすると真上から見た地図の見た目になる。Size でマップの表示範囲を調整する)。プレイヤーアイコンは、RawImageの中央に小さな画像を重ねて置くだけ。敵やアイテムのアイコンも、ワールド座標をミニマップ座標に変換して重ねれば、本格的なレーダーになります。
