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

时间:2018-09-28 09:07:01

标签: c# unity3d

我正在使用EditorWindow。

在脚本顶部:

<PropertyGroup>
    <OutputPath>bin\$(Configuration)\</OutputPath>
    <DocumentationFile>obj\$(Configuration)\ProjectName.xml</DocumentationFile>
</PropertyGroup>

内部OnGUI:

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

保存方法:

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;
        }
}

JsonHelper类:

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

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

并重新加载值:

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;
    }
}

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

1 个答案:

答案 0 :(得分:1)

如果您真的要保存和读取这样的值。考虑让课程计时器

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:\json\json.txt", timerInJson);

那样阅读。

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