Hello I am trying to save my toggle-state through ‘PlayerPrefs’ with a ‘public static int’.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AudioStatic : MonoBehaviour
{
public static int sfx;
public static int music;
public static AudioStatic instance;
private void Awake()
{
gameObject.transform.parent = null;
DontDestroyOnLoad(transform.gameObject);
if (instance == null)
{
instance = this;
}
else
{
Destroy(this.gameObject);
return;
}
}
void Start()
{
music = PlayerPrefs.GetInt("Music");
sfx = PlayerPrefs.GetInt("SFX");
Debug.Log("music: " + music);
}
public static void SetInt()
{
PlayerPrefs.SetInt("Music", music);
}
}
Here I save and get my PlayerPrefs.
Aswell as store my ‘public static int’.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using UnityEngine.SceneManagement;
public class SettingsUIManager : MonoBehaviour
{
[SerializeField] private GameObject musicButton;
[SerializeField] private AudioSource musicSource;
void Start()
{
AudioStatic.music = PlayerPrefs.GetInt("Music");
if (AudioStatic.music == 1)
{
musicButton.GetComponent<Toggle>().isOn = false;
}
else if (AudioStatic.music == 0)
{
musicButton.GetComponent<Toggle>().isOn = true;
}
}
public void ToggleMusic()
{
if (AudioStatic.music == 1)
{
musicSource.mute = !musicSource.mute;
AudioStatic.music = 0;
AudioStatic.SetInt();
Debug.Log("music: " + AudioStatic.music);
}
else if (AudioStatic.music == 0)
{
musicSource.mute = !musicSource.mute;
AudioStatic.music = 1;
AudioStatic.SetInt();
Debug.Log("music: " + AudioStatic.music);
}
}
}
Here is the logic I use, the static int is used like a bool basically. And I save the static int through PlayerPrefs so it remembers if music should be on or off between sessions.
My problem is that this line of code:
if (AudioStatic.music == 1)
{
musicButton.GetComponent<Toggle>().isOn = false;
}
else if (AudioStatic.music == 0)
{
musicButton.GetComponent<Toggle>().isOn = true;
}
Sets the value of my public static int to 0 again if I restart the game with the value set to 1 for some reason, without this logic the music is saved between sessions but not the checkmark of the toggle.