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

Nec*_*ech 2 c# variables serialization unity-game-engine 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 Load() {

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

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

 }
Run Code Online (Sandbox Code Playgroud)

但是当我想要保存自定义变量时,它就出现了.以下是包含它们的类如下所示:

     [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; }
Run Code Online (Sandbox Code Playgroud)

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

Fat*_*tie 5

只是为了把重点赶回家

1)在Unity中

完全忘记了序列化.就这么简单.

我甚至无法讨论为什么.它就是这样!

2)通常这些天你应该在游戏/手机上

使用JSON

故事结局.幸运的是,它非常容易.

3)要转换回JSON,

正是@Programmer所说的.

/sf/answers/2806833641/

4)最后为了保存,老实说没有错:

只需使用PlayerPrefs来保存长JSON字符串.别担心.

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

只需这样做:https://stackoverflow.com/a/35941579/294884

(Notte:在任何情况下都不会在Unity中使用"streamwriter".保存/读取文本文件非常简单.)

重复.在Unity中做>> NOT <<触摸,思考或使用"序列化"!无论如何,永远!

享受生活!