オプションメニューを準備する - クラウドセーブ - (Unity モジュール)
注釈:本資料は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
- C# ファイル:
これらの UI がどのように構築されているかの詳細を見てみましょう。
Options Menu
Options Menu は Help and Options Menu からのみアクセス可能で、対応するボタンはすでに Main Menu UI にあります。以下は Options Menu のプレビューです:

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 イベントのバインディングと初期化。AudioManagerはPlayerPrefsに保存された値を提供し、それらの値の更新操作を処理します: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 設定を有効にします。この設定により、チュートリアルに従うために使用するスターターファイルが有効になります。
リソース
-
このチュートリアルで使用されるファイルは、Unity Byte Wars GitHub リポジトリで入手できます。