前提・実現したいこと
メニューシーン保存した音量を他シーンで共有させたい。
発生している問題・エラーメッセージ
メニューシーンにスライダーを配置し音量と同期させ同シーンにあるタイトルに戻るボタンで音量を保存し、ステージシーンで保存した音量の値を受け取るまではできました。しかしその取得した音量をミキサーにセットできません。
該当のソースコード
メニューシーンにあるスライダーのスクリプト
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6 7public class VSlider : MonoBehaviour 8{ 9 public UnityEngine.Audio.AudioMixer mixer; 10 11 public Slider VolumeSlider; 12 13 public static float GetVolume; 14 15 16 17 void Awake() 18 { 19 GetComponent<Slider>().value = PlayerPrefs.GetFloat("master", 0); 20 21 float GetVolume = VolumeSlider.value; 22 23 PlayerPrefs.SetFloat("GetVolume", VolumeSlider.value); 24 25 Debug.Log("ステージに渡す"+PlayerPrefs.GetFloat("GetVolume", GetVolume)); 26 Debug.Log("スライダー値" + VolumeSlider.value); 27 } 28 29 public void masterVol(Slider VolumeSlider) 30 { 31 if (PlayerPrefs.HasKey("master")) 32 { 33 PlayerPrefs.GetFloat("master", VolumeSlider.value); 34 35 mixer.SetFloat("master", VolumeSlider.value); 36 } 37 else 38 { 39 mixer.SetFloat("master",-20); 40 } 41 } 42 void Update() 43 { 44 Slider VolumeSlider = gameObject.GetComponent<Slider>(); 45 46 } 47}
メニューシーンにあるタイトルに戻るボタン、PlayerPrefs.Save();は負荷が大きくボタンに置くといいと読んだのでここにおきました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5using UnityEngine.UI; 6 7public class buttonmenu : MonoBehaviour 8{ 9 public Slider VolumeSlider; 10 11 public void OnClick() 12 { 13 FadeManager.Instance.LoadScene("Title", 0.3f); 14 15 16 17 PlayerPrefs.SetFloat("master", VolumeSlider.value); 18 PlayerPrefs.SetFloat("GetVolume", VolumeSlider.value); 19 PlayerPrefs.Save(); 20 Debug.Log("ステージに渡す" + PlayerPrefs.GetFloat("master", 0)); 21 Debug.Log("masterセーブ値" + PlayerPrefs.GetFloat("master", 0)); 22 Debug.Log("GetVolumeセーブ値" + PlayerPrefs.GetFloat("GetVolume", 0)); 23 } 24 25 26 27}
ステージにあるAudio Sourceにアタッチしてあるスクリプト。ここのデバッグには保存した数値がでてます。
しかしmixer.SetFloat("master", GetVolume);が機能しないです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class SetVolume : MonoBehaviour { 6 7 public UnityEngine.Audio.AudioMixer mixer; 8 9 public static float GetVolume; 10 11 void Start() 12 { 13 14 PlayerPrefs.GetFloat("master", GetVolume); 15 16 mixer.SetFloat("master", GetVolume);//ここが機能しません。 17 18 Debug.Log("メニューからもらうStart" + PlayerPrefs.GetFloat("master", GetVolume));//ここはセーブした値が出ます。 19 20 } 21} 22
重複しますがSetVolumeのデバッグは保存した値がでます。
どうか知恵をお貸しください。
基本的なコードの書き方も理解していない素人ゆえコードで説明があるとすごく助かります。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー