Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Unity3D中保存自定义变量?_C#_Variables_Serialization_Unity3d_Unity5 - Fatal编程技术网

C# 如何在Unity3D中保存自定义变量?

C# 如何在Unity3D中保存自定义变量?,c#,variables,serialization,unity3d,unity5,C#,Variables,Serialization,Unity3d,Unity5,我正在为我的Unity3D游戏开发一个保存和加载系统。像位置这样的基础很简单,我只需要 public void Save() { PlayerPrefs.SetFloat ("X", transform.position.x); PlayerPrefs.SetFloat ("Y", transform.position.y); PlayerPrefs.SetFloat ("Z", transform.position.z); } public void

我正在为我的Unity3D游戏开发一个保存和加载系统。像位置这样的基础很简单,我只需要

 public void Save() {

     PlayerPrefs.SetFloat ("X", transform.position.x);
     PlayerPrefs.SetFloat ("Y", transform.position.y);
     PlayerPrefs.SetFloat ("Z", transform.position.z);

 }

 public void Load() {

     float x = PlayerPrefs.GetFloat ("X");
     float y = PlayerPrefs.GetFloat ("Y");
     float z = PlayerPrefs.GetFloat ("Z");

     transform.position = new Vector3 (x, y, z);

 }
但是接下来我要保存自定义变量。 下面是包含它们的类的外观:

     [SerializeField] private Stat health; 
     public static Stat Health { get; set; }
     [SerializeField] private Stat exp;
     public static Stat Exp { get; set; }
     [SerializeField] private Stat oxygen;
     public static Stat Oxygen { get; set; }
     [SerializeField] private Stat playerLevel;
     public static Stat PlayerLevel { get; set; }

所以我的问题是,我如何在我的SaveLoad脚本中获取这些统计数据的值呢?

只是为了让大家明白这一点

1) 团结一致

完全忘记序列化。就这么简单。 我甚至懒得讨论为什么。就是这样

2) 一般来说,现在在游戏/手机中,你应该

使用JSON 故事结束了。幸运的是,这非常容易

3) 要将前后转换为JSON

完全按照@Programmer所说的去做。

4) 最后,为了避免这种情况,老实说,这没有什么错:

只需使用PlayerPrefs保存长JSON字符串。别担心。 请注意,如果您确实希望将其保存为文本文件(这很好),则将其保存为文本文件非常容易:

只要这样做:

(注意:无论出于何种原因,都不要在Unity中使用“streamwriter”。保存/读取文本文件完全是件小事。)


重复一遍。你不知道“保存”是什么意思吗?保存在哪里?这个问题已经被问过很多次了。我只能找到一个答案。从中删除
{get;set;}
,然后完全遵循,这是一个超级重复。按程序员说的去做。@nech点击这里:我同意,我再也强调不出统一中的序列化有多么糟糕了!如果您指的是[SerializableField],它只是为了从Unity inspector访问它,而不公开它。我试图使用PlayerPrefs保存数据,但它无法识别Stat变量,这是一个自定义变量。有没有办法使用PlayerRefs来使用它?如果没有,我该如何使用PlayerPrefs将其保存到Json中?注意,通常只使用“public”而不是[SerializeField]。@nech程序员在这里详细解释了如何使用Json+PlayerPrefs:。。正如上面十次提到的:)我的问题出现在一个完全不同的地方,而不是引用例如Health,我应该引用Health.CurrentVal,现在它工作了,谢谢。