メインコンテンツまでスキップ

オプションメニューを準備する - クラウドセーブ - (Unity モジュール)

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

メニューの内容

このチュートリアルでは、音楽と効果音 (SFX) のボリューム設定を変更するためのユーザーインターフェースを準備する方法を学びます。後ほど、このメニューは AccelByte Gaming Services (AGS) Cloud Save サービスに保存されたプレイヤーの設定を表示します。

Options Menu UI はすでに作成されていますが、AGS Game SDK と接続する前に、いくつかの追加コードが必要です。これらのファイルは リソース セクションで入手でき、以下で構成されています:

  • OptionsMenu: ゲームオプション設定を表示するために使用される C# クラス。
    • C# ファイル: /Assets/Scripts/UI/MainMenu/HelpAndOptions/Options/OptionsMenu.cs
    • Prefab ファイル: /Assets/Resources/Modules/MainMenu/HelpAndOptions/Options/OptionsMenu.prefab

これらの UI がどのように構築されているかの詳細を見てみましょう。

Options Menu

Options Menu は Help and Options Menu からのみアクセス可能で、対応するボタンはすでに Main Menu UI にあります。以下は Options Menu のプレビューです:

Options Menu preview Unity Byte Wars cloud saves

Options Menu は、AGS からのクラウドセーブクエリ結果に基づいて、現在の音楽と SFX ボリューム設定を表示します。音楽と SFX ボリューム設定の値を制御および表示するための 2 つのスライダーとテキストが含まれています。また、Main Menu に戻るための Back Button もあります。すべてのテキスト UI には TextMeshPro が使用されています。

Byte Wars は、Unity の PlayerPrefs を使用してすべてのプレイヤー設定を保存します。AudioManager は、ゲーム内のどこでもオーディオボリュームを変更するためのゲッターとセッター関数で準備されています。

OptionsMenu には以下が含まれています:

  • 使用準備ができている UI 参照の宣言:

    [SerializeField] private Slider musicVolumeSlider;
    [SerializeField] private Slider sfxVolumeSlider;
    [SerializeField] private TMP_Text musicVolumeText;
    [SerializeField] private TMP_Text sfxVolumeText;
    [SerializeField] private Button backButton;
  • OptionsMenu のアクティベーションと非アクティベーションをブロードキャストするためのデリゲートと静的イベント関数:

    public delegate void OptionsMenuDelegate(float musicVolume, float sfxVolume);

    public static event OptionsMenuDelegate OnOptionsMenuActivated = delegate {};
    public static event OptionsMenuDelegate OnOptionsMenuDeactivated = delegate {};
  • Start() 関数での UI イベントのバインディングと初期化。AudioManagerPlayerPrefs に保存された値を提供し、それらの値の更新操作を処理します:

    void Start()
    {
    musicVolumeSlider.value = AudioManager.Instance.GetCurrentVolume(AudioManager.AudioType.MusicAudio);
    sfxVolumeSlider.value = AudioManager.Instance.GetCurrentVolume(AudioManager.AudioType.SfxAudio);
    ChangeMusicVolume(musicVolumeSlider.value);
    ChangeSfxVolume(sfxVolumeSlider.value);

    musicVolumeSlider.onValueChanged.AddListener(volume => ChangeMusicVolume(volume));
    sfxVolumeSlider.onValueChanged.AddListener(volume => ChangeSfxVolume(volume));
    backButton.onClick.AddListener(() => MenuManager.Instance.OnBackPressed());
    }
  • Options Menu がアクティブになったときに AudioManager からオーディオボリューム値を取得する OnEnable() 関数。また、オーディオボリューム値をゲームの他の部分にブロードキャストする OnOptionsMenuActivated イベントを呼び出します:

    void OnEnable()
    {
    if (gameObject.activeSelf)
    {
    musicVolumeSlider.value = AudioManager.Instance.GetCurrentVolume(AudioManager.AudioType.MusicAudio);
    sfxVolumeSlider.value = AudioManager.Instance.GetCurrentVolume(AudioManager.AudioType.SfxAudio);

    OnOptionsMenuActivated.Invoke(musicVolumeSlider.value, sfxVolumeSlider.value);
    }
    }
  • 最新のオーディオボリューム値をゲームの他の部分にブロードキャストする OnOptionsMenuDeactivated イベントを呼び出す OnDisable() 関数:

    private void OnDisable()
    {
    OnOptionsMenuDeactivated.Invoke(musicVolumeSlider.value, sfxVolumeSlider.value);
    }
  • AudioManager で音楽と SFX オーディオボリュームを変更し、Volume Text UI を更新する関数:

    private void ChangeMusicVolume(float musicVolume)
    {
    AudioManager.Instance.SetMusicVolume(musicVolume);

    int musicVolumeInt = (int)(musicVolume * 100);
    musicVolumeText.text = musicVolumeInt.ToString() + "%";
    }

    private void ChangeSfxVolume(float sfxVolume)
    {
    AudioManager.Instance.SetSfxVolume(sfxVolume);

    int sfxVolumeInt = (int)(sfxVolume * 100);
    sfxVolumeText.text = sfxVolumeInt.ToString() + "%";
    }

UI を準備する

モジュールの残りの部分に従うには、Start Mode を有効にする必要があります。これを行うには、Unity でプロジェクトを開きます。Project ウィンドウから、Assets\Resources\Modules\CloudSaveEssentials\CloudSaveEssentialsAssetConfig.asset を開き、Inspector で Is Starter Active 設定を有効にします。この設定により、チュートリアルに従うために使用するスターターファイルが有効になります。

リソース