JuanchiBM 2 Report post Posted August 1, 2020 Mi problema es el siguiente, con el slider controlo el volumen del juego, pero cuando cambio de escena, la barra del slider vuelve a estar al maximo (Aunque el volumen no se escuche ya que, en la anterior escena lo bajas) Por lo tanto, quiero saber como guardar la posicion de la barra del slider, el Value o Valor using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; public float volumen; void Start() { volumen = PlayerPrefs.GetFloat("Musica", sliderValue); } public void SetLevel (float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10 (sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } Ese es el codigo, lo de los PlayerPrefs lo añadi despues para intentar que se guarde, pero no funciono asi que no le hagan caso ah, seguro debo usar PlayerPrefs pero no se como seria la manera correcta, gracias ;D Share this post Link to post Share on other sites
francoe1 536 Report post Posted August 1, 2020 Elimina la variable volumen y en la función start llama a la función SetLevel con el valor guardado. SetLevel(PlayerPrefs.GetFloat("Musica")); Share this post Link to post Share on other sites
JuanchiBM 2 Report post Posted August 1, 2020 4 hours ago, francoe1 said: Elimina la variable volumen y en la función start llama a la función SetLevel con el valor guardado. SetLevel(PlayerPrefs.GetFloat("Musica")); No me funciono, cambie el Start por un update pero tampoco funciono public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; void Update() { SetLevel(PlayerPrefs.GetFloat("Musica")); } public void SetLevel (float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10 (sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } Alguna otra opcion?? Share this post Link to post Share on other sites
Moand 9 Report post Posted August 2, 2020 public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; void Start() { SetLevel(PlayerPrefs.GetFloat("Musica")); } public void SetLevel (float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10 (sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } Creo que @francoe1 se refería a algo como esto PD: No deberías programar en español Share this post Link to post Share on other sites
JuanchiBM 2 Report post Posted August 2, 2020 3 hours ago, Moand said: public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; void Start() { SetLevel(PlayerPrefs.GetFloat("Musica")); } public void SetLevel (float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10 (sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } Creo que @francoe1 se refería a algo como esto PD: No deberías programar en español Si, hice eso, pero despues probe con un Update porque no servia, y si, tengo que acostumbrarme a programar en ingles, por eso algunas estan en ingles y otras no jajajaja, gracias por el consejo igual Share this post Link to post Share on other sites
Moand 9 Report post Posted August 2, 2020 Pues como no sea que no tienes ese código asignado a ningún componente 🤷♂️ Share this post Link to post Share on other sites
JuanchiBM 2 Report post Posted August 3, 2020 On 8/1/2020 at 11:17 AM, JuanchiBM said: Mi problema es el siguiente, con el slider controlo el volumen del juego, pero cuando cambio de escena, la barra del slider vuelve a estar al maximo (Aunque el volumen no se escuche ya que, en la anterior escena lo bajas) Por lo tanto, quiero saber como guardar la posicion de la barra del slider, el Value o Valor using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; public float volumen; void Start() { volumen = PlayerPrefs.GetFloat("Musica", sliderValue); } public void SetLevel (float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10 (sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } Ese es el codigo, lo de los PlayerPrefs lo añadi despues para intentar que se guarde, pero no funciono asi que no le hagan caso ah, seguro debo usar PlayerPrefs pero no se como seria la manera correcta, gracias ;D Ya encontre el problema using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Audio; public class Volumen : MonoBehaviour { public float sliderValue; public AudioMixer mixer; public Slider music; void Start() { music.value = PlayerPrefs.GetFloat("Musica"); } public void SetLevel(float sliderValue) { mixer.SetFloat("Sonido", Mathf.Log10(sliderValue) * 20); PlayerPrefs.SetFloat("Musica", sliderValue); } } No encontraba el componente Value, sabia que era algo por el estilo pero no sabia como hacerlo, lo unico que hice fue crear un objeto "Slider" y asignarlo al propio slider, y luego, al empezar, que el componente "Value" del Slider sea igual a la Pref "Musica" la cual es igual al sliderValue que se puso con anterioridad, con esto, aunque se cierre el juego, el volumen se va a quedar guardado, y no solo eso, si no que al cambiar de escenario tambien se queda guardado Share this post Link to post Share on other sites
iRobb 776 Report post Posted August 4, 2020 Y cada vez que se ejecute ese código en un ordenador/móvil o lo que sea que el app no esté instalada por primera vez, reventará. No encontrará el float de Musica en PlayerPrefs. Tienes que ponerle un valor por defecto que lo acepta el GetFloat en el segundo parámetro. 1 Share this post Link to post Share on other sites
Igor 337 Report post Posted August 4, 2020 (edited) playerPrefs tiene la funcion "HasKey" para "preguntarle" a ver si esa key existe... en cuyo caso procedes a "cargar" el valor de esa key Edited August 4, 2020 by Igor 1 Share this post Link to post Share on other sites
JuanchiBM 2 Report post Posted August 12, 2020 On 8/4/2020 at 3:48 PM, iRobb said: Y cada vez que se ejecute ese código en un ordenador/móvil o lo que sea que el app no esté instalada por primera vez, reventará. No encontrará el float de Musica en PlayerPrefs. Tienes que ponerle un valor por defecto que lo acepta el GetFloat en el segundo parámetro. Gracias :D Share this post Link to post Share on other sites