画面の「明るさ」は、特に実装する予定はなかった設定です。
UIデザインをしている中で、何気なくつけてしまったので実装してみました。
ビデオカメラを模したUIに方向性が固まりました。

明るさ調整の実装は、お馴染みClaudeさんにお願いしました。
「明るさ」に対して「PostProcessing」を使用するので、ちょっと心配になりましたが、
今回はさらっと実装してくれて助かりました。
概要
- URPのPost Processing(Color Adjustments / Post Exposure)を使用した明るさ調整機能
- DontDestroyOnLoadなGlobal Volumeを専用マネージャーで管理し、全シーンに一括反映する
- 各シーンのローカルVolume(Vignette等)は一切触らない設計
設計方針
- 各シーンのローカルVolumeには Color Adjustments を追加しない
- 専用の Global Volume を1つ作成し、DontDestroyOnLoad オブジェクトに乗せる
- ローカルVolumeとの競合を避けるため、Global VolumeのPriorityは低め(0)に設定
- 値の保存は既存の「Sys_Flag_Manager」に SYS_ プレフィックスで保存し「global_system.json」に永続化
スクリプト(新規・修正)

■ Sys_BrightnessManager.cs(新規)
- 明るさ(Post Exposure)の読み書きを一元管理する
- DontDestroyOnLoadなルートオブジェクトにアタッチする
- Global VolumeコンポーネントをInspectorからアサインして使用
- Color AdjustmentsがVolumeProfileに未追加の場合は自動でAddする
- スライダー値(0〜100) → Post Exposure(-3.0〜+3.0) に変換して適用
- 値の保存先キー:SYS_BRIGHTNESS(global_system.json)
- デフォルト値:50(Post Exposure = 0.0、変化なし)
| メソッド | 内容 |
|---|---|
| GetBrightness() | 現在の明るさ値(0〜100)を取得 |
| SetBrightnessImmediate(int) | 値を保存しMixerに即時反映 |
| ResetToDefault() | デフォルト値(50)に戻して保存 |
| ApplyBrightness() | 保存済みの値をVolumeに反映 |
| ConvertToExposure(int) | スライダー値→Post Exposure変換(static) |
■ UI_SystemSettingsPanel.cs(修正)
- 既存のウィンドウ・解像度設定UIに明るさスライダーを追加
- Inspectorアサイン:brightnessSlider(Slider)/ brightnessValueText(TextMeshProUGUI)
- RefreshAll()でパネルを開いたときに現在値を反映
- リセットボタン(btnReset)押下時にBrightnessManagerのResetToDefault()も呼ぶ
- onValueChanged の二重発火防止のため、RefreshAll時はリスナーを一時解除して再登録
Unity設定手順

- ルート直下に「Brightness_Manager」という名前で空のGameObjectを作成
- Volumeコンポーネントを追加し以下のように設定する
・Is Global:ON
・Priority:0
・Profile:新規作成(例:BrightnessProfile)
・Profileに「Color Adjustments」を追加(Post Exposureのみ使用) - Sys_BrightnessManager.csをアタッチし、Global VolumeフィールドにVolumeをアサイン
- SystemSettings_CanvasにSliderとTextMeshProを追加
- UI_SystemSettingsPanelの各フィールドにアサイン

実機での挙動
ポストプロセスを使用しましたが、今回の「明るさ」だけを独立してもらえたので、
既存の各Sceneの設定と被らずに安全に実装することができて満足です(*´ω`*)
ついでにちょろっと、
メイン画面に常備しようとしているスライダーとのリンクも試してみました。
これも独立型で、既存設定とのリンクもしてもらえたので、UIデザインそのままの想定挙動ができそうです♪
補足・注意事項
- UICanvas(Screen Space – Overlay)はPost Processingの対象外のため、
明るさ調整はUI以外(背景・立ち絵等)のみに影響する。
ノベルゲームとしてはテキストの可読性を損なわないため、この挙動が正しい。
| ジャンル | UIへの影響 | 一般的か |
|---|---|---|
| アクション・RPG・3Dゲーム | UIに影響しない | ✅ スタンダード |
| ノベルゲーム | 背景・立ち絵のみ明るくなり、テキストウィンドウは変わらない | ✅ むしろ理想的 |
| 映像系・シネマティック | 全体にかけたい場合もある | 要件次第 |
- Post Exposureの範囲(-3〜+3)は
Sys_BrightnessManager の EXPOSURE_MIN / EXPOSURE_MAX 定数で変更可能。
- Sys_SystemSettingsManager.cs は変更なし。

コメント