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

How do I save custom variables in Unity3D?

我正在为我在 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);

 }

但是接下来就是我想保存自定义变量的部分。 这是包含它们的 class 的样子:

     [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) 在 Unity 中

完全忘记序列化。就是这么简单。

我什至懒得讨论原因。就是这样!

2) 通常这些天在 games/mobile 你应该

与JSON

一起工作

故事结束。幸运的是,这非常简单。

3) 前后转换为JSON,

按照@Programmer 所说的去做。

4) 终于挽回了,老实说没有错:

只需使用 PlayerPrefs 来保存长 JSON 字符串。不用担心。

请注意,如果您只想将其保存为文本文件,这很好,将其保存为文本文件非常容易:

只需这样做:

(注意:切勿出于任何原因在 Unity 中使用 "streamwriter"。这对 save/read 文本文件来说完全微不足道。)

重复。不要 >> 不要 << 在 Unity 中触摸、思考或使用 "serialization"!出于任何原因,永远!

享受生活!