如何将计时器值保存到 json 文件并读回它们?



我正在使用EditorWindow。

在脚本顶部:

private int h = 0, m = 0, s = 0;
private static int Hours = 0;
private static int Minutes = 0;
private static int Seconds = 0;

在 OnGUI 内部:

private void OnGUI()
{
EditorGUI.BeginChangeCheck();
Hours = EditorGUILayout.IntSlider("Set the hours",Hours,0, 59);
Minutes = EditorGUILayout.IntSlider("Set the minutes", Minutes, 0, 59);
Seconds = EditorGUILayout.IntSlider("Set the seconds", Seconds, 0, 59);
if (EditorGUI.EndChangeCheck())
{
h = Hours;
m = Minutes;
s = Seconds;
}
}

和保存方法:

private void SaveTimerValues()
{
string jsonTimer = JsonHelper.ToJson(, true);
File.WriteAllText(@"d:jsonjson.txt", jsonTimer);
}

类 JsonHelper:

using UnityEngine;
using System.Collections;
using System;
public class JsonHelper
{
public static T[] FromJson<T>(string json)
{
Wrapper<T> wrapper = UnityEngine.JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.Items;
}
public static string ToJson<T>(T[] array, bool prettyPrint)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return UnityEngine.JsonUtility.ToJson(wrapper, prettyPrint);
}
[Serializable]
private class Wrapper<T>
{
public T[] Items;
}
}

在 SaveTimerValues 中,sonHelper.ToJson 应该获取第一个参数作为数组。

并加载回值:

string jsonTimer = File.ReadAllText(@"d:jsonjson.txt");
if (jsonTimer == null)
{
return null;
}

但是如何首先保存计时器值,然后如何读回它们并将它们分配给每个变量: 小时 分钟秒 ?

如果你真的想保存和读取这样的值。考虑制作类计时器

class Timer {
public int Hours = 0;
public int Minutes = 0;
public int Seconds = 0;
}

但是你真的应该考虑使用DateTime并改用它。

此外JSON只是简单的字符串,因此您可以使用

string timerInJson = UnityEngine.JsonUtility.ToJson(timer);
File.WriteAllText(@"d:jsonjson.txt", timerInJson);

并这样阅读。

string jsonTimer = File.ReadAllText(@"d:jsonjson.txt");
Timer timer = JsonUtility.FromJson<Timer>(jsonTimer);