- Home /
Write multiple GUI slider values to json file in Unity
I am experimenting with a the LitJson library to write static code from my unity game to .json files on my local drive. What I am trying to do it scrape the data from 10 sliders in my scene to have a json file that would neatly save and list their data when a saved button is pressed.
What I am trying to do now is not save to playerprefs, but save to a unique Json file each time the save button is pressed.
I have this script allowing me to save the slider data with a button to playerprefs.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class buttonsave : MonoBehaviour
{
public Button button2;
public Slider Slider;
public float valueofslider;
Slider[] sliders;
void Start()
{
button2.onClick.AddListener(() => buttonCallBack(button2));
//Find Sliders
sliders = FindObjectsOfType<Slider>() as Slider[];
valueofslider = PlayerPrefs.GetFloat(gameObject.name + "valueofslider");
Slider.value = valueofslider;
}
private void buttonCallBack(Button buttonPressed)
{
valueofslider = Slider.value;
{
if (buttonPressed == button2)
{
for (int i = 0; i < sliders.Length; i++)
PlayerPrefs.SetFloat(gameObject.name + "valueofslider", valueofslider);
Debug.Log("saves slider value to player prefs");
}
}
}
void OnDisable()
{
//Un-Register Button Events
button2.onClick.RemoveAllListeners();
}
}
And code to write json data on start:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using LitJson;
public class writejson : MonoBehaviour
{
public ShaderValues shader = new ShaderValues("Test123", 2, 155, 100, 30);
JsonData shaderJson;
public static string GetUniqueIdentifier()
{
return System.Guid.NewGuid().ToString();
}
void Start()
{
shaderJson = JsonMapper.ToJson(shader);
Debug.Log(shaderJson);
File.WriteAllText(Application.dataPath + "/Json/ShaderSettings_" + GetUniqueIdentifier() + ".json", shaderJson.ToString());
}
public class ShaderValues
{
public string name;
public int shadertype;
public int red;
public int blue;
public int green;
public ShaderValues(string name, int shadertype, int red, int blue, int green)
{
this.name = name;
this.shadertype = shadertype;
this.red = red;
this.blue = blue;
this.green = green;
}
}
}
But I am unsure how to merge this code to allow the button press to write the slider data to a json file. I am trying something like this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using LitJson;
public class SaveJsonWithButton : MonoBehaviour
{
public SliderValue slider = new SliderValue(slidervalue);
JsonData shaderJson;
public Button button2;
public Slider Slider;
public float valueofslider;
Slider[] sliders;
void Start()
{
button2.onClick.AddListener(() => buttonCallBack(button2));
sliders = FindObjectsOfType<Slider>() as Slider[];
valueofslider = PlayerPrefs.GetFloat(gameObject.name + "valueofslider");
Slider.value = valueofslider;
}
private void buttonCallBack(Button buttonPressed)
{
valueofslider = Slider.value;
{
if (buttonPressed == button2)
{
for (int i = 0; i < sliders.Length; i++)
PlayerPrefs.SetFloat(gameObject.name + "valueofslider", valueofslider);
Debug.Log("saves slider value to player prefs");
}
}
}
public class SliderValue
{
public int slidervalue;
public SliderValue(int shadertype)
{
this.slidervalue = slidervalue;
}
}
}
Your answer
Follow this Question
Related Questions
Binding JSON contents to ui sliders 0 Answers
Rotate GameObject With GUI Slider 2 Answers
Adding a slider 2 Answers
Lagging/unmoving slider 0 Answers