ふりかえり
前回はBGMを実装して、草原や森にそれぞれの雰囲気が加わりました!
音があると、世界への没入感がグッと増しますね!
設定画面を実装!
今回は、設定画面を作ります!
- プレイヤーステータスの確認
- SE・BGMの音量調整
この2つをUI上から確認・操作できるようにします!
スクリプトの変更
SettingsManager.cs
- settingsButton を押すと settingsPanel の表示を切り替えます。
- プレイヤーの名前やレベル、攻撃力や会心率などを TextMeshProUGUI に表示します。
- SE と BGM それぞれのスライダーで音量を変更可能にします。
- 変更時には AudioManager に値を渡して、リアルタイムに音量を反映!
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class SettingsManager : MonoBehaviour
{
[Header("UI References")]
public GameObject settingsPanel; // 設定パネル
public Button settingsButton; // 設定ボタン(開閉用)
[Header("プレイヤー情報表示")]
public TextMeshProUGUI playerNameText;
public TextMeshProUGUI playerLevelText;
public TextMeshProUGUI playerHPText;
public TextMeshProUGUI playerAttackText;
public TextMeshProUGUI playerDefenseText;
public TextMeshProUGUI playerCriticalRateText;
public TextMeshProUGUI playerCriticalDamageText;
public TextMeshProUGUI playerGoldText;
public TextMeshProUGUI playerDiamondText;
[Header("音量設定")]
public Slider seVolumeSlider; // SE音量スライダー
public Slider bgmVolumeSlider; // BGM音量スライダー
public TextMeshProUGUI seVolumeText; // SE音量表示テキスト
public TextMeshProUGUI bgmVolumeText; // BGM音量表示テキスト
[Header("参照")]
public PlayerManager playerManager;
public AudioManager audioManager;
private bool isSettingsOpen = false;
void Start()
{
// 設定ボタンのイベントリスナーを設定
if (settingsButton != null)
{
settingsButton.onClick.AddListener(ToggleSettingsPanel);
}
// スライダーのイベントリスナーを設定
if (seVolumeSlider != null)
{
seVolumeSlider.onValueChanged.AddListener(OnSEVolumeChanged);
}
if (bgmVolumeSlider != null)
{
bgmVolumeSlider.onValueChanged.AddListener(OnBGMVolumeChanged);
}
// 初期設定:設定パネルは閉じた状態
if (settingsPanel != null)
{
settingsPanel.SetActive(false);
}
isSettingsOpen = false;
// 音量スライダーの初期値を設定
InitializeVolumeSliders();
}
// 設定パネルの表示/非表示を切り替え
public void ToggleSettingsPanel()
{
isSettingsOpen = !isSettingsOpen;
if (settingsPanel != null)
{
settingsPanel.SetActive(isSettingsOpen);
}
if (isSettingsOpen)
{
UpdatePlayerInfo();
UpdateVolumeDisplay();
}
}
// プレイヤー情報を更新
private void UpdatePlayerInfo()
{
if (playerManager == null || playerManager.player == null) return;
var player = playerManager.player;
if (playerNameText != null)
playerNameText.text = $"名前: {player.name}";
if (playerLevelText != null)
playerLevelText.text = $"レベル: {player.level}";
if (playerHPText != null)
playerHPText.text = $"HP: {player.currentHP}/{player.maxHP}";
if (playerAttackText != null)
playerAttackText.text = $"攻撃力: {player.attack}";
if (playerDefenseText != null)
playerDefenseText.text = $"防御力: {player.defense}";
if (playerCriticalRateText != null)
playerCriticalRateText.text = $"会心率: {player.criticalRate * 100:F1}%";
if (playerCriticalDamageText != null)
playerCriticalDamageText.text = $"会心倍率: {player.criticalDamageMultiplier:F1}倍";
if (playerGoldText != null)
playerGoldText.text = $"ゴールド: {player.gold}";
if (playerDiamondText != null)
playerDiamondText.text = $"ダイヤ: {player.diamond}";
}
// 音量スライダーの初期化
private void InitializeVolumeSliders()
{
if (audioManager != null)
{
if (seVolumeSlider != null)
{
seVolumeSlider.value = audioManager.seVolume;
}
if (bgmVolumeSlider != null)
{
bgmVolumeSlider.value = audioManager.bgmVolume;
}
}
}
// 音量表示を更新
private void UpdateVolumeDisplay()
{
if (audioManager != null)
{
if (seVolumeText != null)
{
seVolumeText.text = $"SE音量: {(audioManager.seVolume * 100):F0}%";
}
if (bgmVolumeText != null)
{
bgmVolumeText.text = $"BGM音量: {(audioManager.bgmVolume * 100):F0}%";
}
}
}
// SE音量変更時の処理
private void OnSEVolumeChanged(float value)
{
if (audioManager != null)
{
audioManager.SetSEVolume(value);
UpdateVolumeDisplay();
}
}
// BGM音量変更時の処理
private void OnBGMVolumeChanged(float value)
{
if (audioManager != null)
{
audioManager.SetBGMVolume(value);
UpdateVolumeDisplay();
}
}
// 設定パネルが開いているかどうかを取得
public bool IsSettingsOpen()
{
return isSettingsOpen;
}
}
Unityでの設定
- SettingsManager を空のGameObjectに追加
- 設定画面パネル、ボタン、テキスト、スライダーなどのUIを作成
- SettingsManager に各UI要素をInspectorからアタッチ

動作確認
右下のSettingsボタンをタップすると設定画面が開きます!
- プレイヤーのステータスが一覧で表示!
- SE・BGM音量のスライダーを動かすと、リアルタイムに音量が変化!
ゲームの細かな調整ができるようになって、より快適にプレイできます!

まとめ
今回は設定画面を実装しました!
- ステータスの見える化
- 音量の調整機能
このようにゲームプレイに直接関係しない便利機能をまとめて配置するのが「設定画面」です。
次回予告
次回はいよいよガチャ機能を実装!
お楽しみに!

