UnityでのVSync Count設定について
目次
1. VSyncとは?
ゲームやアプリの描画速度(フレームレート)と、モニターのリフレッシュレート(画面の書き換え頻度)を同期させる仕組みを VSync(Vertical Synchronization) と呼びます。
- リフレッシュレート(例: 60Hz)→ 1秒間に60回画面を更新するディスプレイの性能
- フレームレート(fps)→ 1秒間に何枚の画像を描画するか
この2つがズレると、画面が上下で食い違う「ティアリング」という現象が発生します。VSyncはこれを防ぐために用いられます。
2. UnityのVSync Count設定
Unityでは Project Settings → Quality → VSync Count で制御できます。内部的には QualitySettings.vSyncCountというプロパティです。
値 | 意味 | 挙動 |
---|---|---|
0 | Don’t Sync | VSyncを無効化。GPUが出せる限りのフレームを描画。Application.targetFrameRate が優先される。 |
1 | Every V Blank | 垂直同期ごとにフレームを更新。60Hzモニタなら最大60fps。 |
2 | Every Second V Blank | 2回に1回同期。60Hzなら30fpsに固定。 |
3. メリットとデメリット
VSync有効(1以上)
- メリット・画面のティアリングを防ぐ・描画が安定し、映像が滑らかに見える
- デメリット・入力遅延(Input Lag)が増える・性能不足で同期を維持できないと、カクつきが目立つ
VSync無効(0)
- メリット・入力レスポンスが速い・制限を外してベンチマーク的に使える
- デメリット・ティアリングが発生する可能性・GPUフル稼働でバッテリー消費・発熱が増える
4. スクリプトからの制御
講義で実際に見せると理解しやすいサンプルコードです。
using UnityEngine;
public class VSyncExample : MonoBehaviour
{
void Start()
{
// VSyncを無効化して60fpsに固定
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 60;
// VSyncを有効化(1回の垂直同期ごと)
// QualitySettings.vSyncCount = 1;
}
}
補足
- vSyncCount = 0 → Application.targetFrameRate が効く
- vSyncCount >= 1 → targetFrameRateは無視される
5. 実用的な設定例
- モバイルアプリ(iOS / Android)→ VSync無効(0)+ targetFrameRate指定(60fpsや30fps)でバッテリー負担を調整
- PCゲーム(一般向け)→ VSync=1 が基本(モニタのHzに同期)
- 競技系・レスポンス重視→ VSync=0 + targetFrameRate高め、または無制限
まとめ
- VSyncは「画面のズレ防止」と「入力遅延」のトレードオフ
- Unityでは Quality Settings → VSync Count で設定
- スクリプトから QualitySettings.vSyncCount で切り替え可能
- 目的に応じて設定を使い分ける のが重要
訪問数 11 回, 今日の訪問数 11回
ディスカッション
コメント一覧
まだ、コメントがありません