Hi, so I'm currently struggle with this.
the float value can save and load normaly but somehow the whole number it just save as 0 then load it.
here is the video for a closer look
also here is the code and some extra images
thanks
#slider On value change event
1 messages · Page 1 of 1 (latest)
[]cb
Use codeblocks to send code in a message!
To make a codeblock, surround your code with ```
To use C# syntax highlighting add cs after the three back ticks.
For example:
```cs
Console.WriteLine("Hello World");
```
Produces:
Console.WriteLine("Hello World");
To send lengthy code, paste it into https://paste.myst.rs/ and send the link of the paste into chat.
void Start(){
LoadSlider();
}
#region Setting - slider
public void Z_SetSliderValue(string NewSliderName){ // called in event slider
// get value by name
float RefValue = SliderList.Find(RefSSlider => RefSSlider.SliderName == NewSliderName).slider.value;
// compare if it different
if (PlayerPrefs.GetFloat(NewSliderName) != RefValue){
// save the value as int or float
if (SliderList.Find(RefSlider => RefSlider.SliderName == NewSliderName).IsFloatNumber){
PlayerPrefs.SetFloat(NewSliderName, RefValue);
} else PlayerPrefs.SetInt(NewSliderName, (int)RefValue);
PlayerPrefs.Save();
Debug.Log("Save: " + NewSliderName + " " + PlayerPrefs.GetFloat(NewSliderName));
}
}
void LoadSlider(){
foreach(var RefSlider in SliderList){
RefSlider.slider.wholeNumbers = !RefSlider.IsFloatNumber;
RefSlider.slider.minValue = RefSlider.MinSetting;
RefSlider.slider.maxValue = RefSlider.MaxSetting;
RefSlider.slider.value = RefSlider.IsFloatNumber ? PlayerPrefs.GetFloat(RefSlider.SliderName) : PlayerPrefs.GetInt(RefSlider.SliderName);
// Debug.Log("Load Value: " + RefSlider.SliderName + " " + PlayerPrefs.GetFloat(RefSlider.SliderName));
}
}
[SerializeField] List<SliderProp> SliderList;
[Serializable] public class SliderProp {
public string SliderName;
public Slider slider;
public bool IsFloatNumber = true;
public int MinSetting, MaxSetting;
}
here you go