我在团结游戏中写了一个Json文件,但是当我在游戏中播放文件" Shader.json"被新数据覆盖。
我想知道如何在文件路径中附加时间戳或增加的数字,以便每次写入数据时都会创建一个新的Json文件。
这是我输出Json数据的代码。 已编辑并正常工作
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;
}
}
}
答案 0 :(得分:2)
生成唯一值的简单而安全的方法是使用Guid
:
File.WriteAllText(Application.dataPath + "/Json/Shader"+ Guid.NewGuid().ToString() +".json", shaderJson.ToString());
NewGuid()
方法会生成一个新的唯一值,实际上保证不仅在您的计算机上是唯一的,而且在全世界都是唯一的。
来自Microsoft Docs中的Guid
页面:
GUID是一个128位整数(16字节),可以在需要唯一标识符的所有计算机和网络中使用。这样的标识符被复制的可能性非常低。
从人的角度来说,这意味着有超过3.4028e + 38个可能的guid值 - 之后是3位,其后有38位数。
这里最大的优点是,即使您运行程序的多个实例,并且每个实例上都有多个线程,每个实例都保存一个文件,生成相同文件名的几率几乎为0(是< / strong>可能,只是非常低的机会)。