Unityの「VSync Count」とは?
Unity の VSync Count は、モニターの画面更新タイミング(垂直同期)に合わせて、ゲームの描画フレームを制御する設定です。
場所は:
Edit → Project Settings → Quality → VSync Count
です。
まず「VSync(垂直同期)」とは?
モニターは、1秒間に何回も画面を書き換えています。
例えば:
- 60Hz → 1秒間に60回更新
- 144Hz → 1秒間に144回更新
ゲーム側がこの更新タイミングとズレて描画すると、
- 画面が横にズレる
- 上半分と下半分で別フレームが見える
という現象が起きます。
これを ティアリング(Tearing) と呼びます。
VSync は、このズレを防ぐための仕組みです。
VSync Count の意味
Every V Blank
毎回の画面更新に同期します。
60Hzモニターなら:
- 最大60FPS
になります。
つまり:
- モニター更新1回ごとに
- ゲームも1フレーム描画
します。
Every Second V Blank
2回に1回だけ同期します。
60Hzモニターなら:
- 最大30FPS
になります。
つまり:
- モニター更新2回ごとに
- ゲーム1フレーム描画
です。
Don’t Sync
VSyncを使いません。
ゲームは可能な限り高速に描画します。
例えば:
- 300FPS
- 500FPS
になることもあります。
図でイメージ
60Hz モニターの場合:
モニター:
|更新|更新|更新|更新|更新|更新|
Every V Blank:
|描画|描画|描画|描画|描画|描画|
→ 60FPS
Every Second V Blank:
|描画| |描画| |描画| |
→ 30FPS
なぜ必要なの?
1. ティアリング防止
最も大きな目的です。
VSync OFF だと:
画面上半分 → 前フレーム
画面下半分 → 次フレーム
のようにズレることがあります。
特に:
- 横スクロール
- カメラ移動
- FPSゲーム
で目立ちます。
2. GPU負荷を下げる
VSync OFF の場合:
描画できるだけ描画する
ため、
- GPU使用率100%
- 発熱
- ファン爆音
になりやすいです。
VSync ON なら:
60FPSで十分なら60FPSで止める
ため、負荷が安定します。
注意点
入力遅延(Input Lag)
VSync ON は、
描画待ち
が発生するため、
- マウス操作
- キー入力
がわずかに遅れる場合があります。
そのため:
- FPS
- 格闘ゲーム
- 音ゲー
では OFF にすることもあります。
targetFrameRate との関係
Unityには:
Application.targetFrameRate = 60;
もあります。
しかし、
VSync が ON
なら、
targetFrameRate は無視される
ことが多いです。
つまり:
VSync の方が優先される
と考えてください。
実際によくある設定
PCゲーム
一般的
VSync ON
理由:
- ティアリング防止
- GPU負荷安定
高FPS競技ゲーム
VSync OFF
理由:
- 入力遅延を減らしたい
スマホ
スマホでは通常、
VSync相当
の制御がOS側で入っています。
Unity側では:
Application.targetFrameRate = 60;
を使うことが多いです。
重要な理解
VSync は、
「ゲームを何FPSで動かすか」
ではなく、
「モニター更新とタイミングを合わせる仕組み」
です。
ここを誤解しやすいです。
Unityで確認する実験
以下を設定してみます。
void Update()
{
Debug.Log(1f / Time.deltaTime);
}
VSync OFF
300FPS
500FPS
などになります。
VSync ON(60Hz)
59
60
付近で安定します。
まとめ
| 設定 | 意味 | 60Hz時 |
|---|---|---|
| Don’t Sync | 同期しない | 制限なし |
| Every V Blank | 毎回同期 | 60FPS |
| Every Second V Blank | 2回に1回同期 | 30FPS |
どれを使えばいい?
初心者向けには、まず:
Every V Blank
がおすすめです。
理由:
- 安定しやすい
- GPU負荷が暴れにくい
- ティアリングが出にくい
ためです。
競技性の高いゲームや、
高FPSを重視する場合だけ、
Don't Sync
を検討します。



ディスカッション
コメント一覧
まだ、コメントがありません