Search code examples
c#unity-game-enginevolume

Transfering data between multiple scenes


I am new to C# and Unity and I tried to implement a volume slider. I can now adjust the volume, but the volume resets every time I try to load a new scene.

Could someone tell me how to transfer the volume to other scenes? I am using Unity 2018.3.14f1 and the code I am using for the volume is:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class SetVolume : MonoBehaviour
{
    public AudioMixer mixer;

    public void SetLevel(float sliderValue)
    {
        mixer.SetFloat("MusicVol", Mathf.Log10(sliderValue) * 20);
    }
}

Solution

  • Save It in PlayerPrefs, Then load it on Start or anywhere you need it.

    public class SetVolume : MonoBehaviour
    {
        public AudioMixer mixer;
         
        
        void Start()
        {
            SetLevel(PlayerPrefs.GetFloat("MusicVol"));
        }
    
        public void SetLevel(float sliderValue)
        {
            PlayerPrefs.SetFloat("MusicVol", sliderValue);
            mixer.SetFloat("MusicVol", Mathf.Log10(sliderValue) * 20);
        }
    }