Skip to main content
 首页 » 编程设计

c#之如何在 Unity3D 中保存自定义变量

2024年02月20日23shanyou

我正在为 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所说的去做。

https://stackoverflow.com/a/40097623/294884

4)最后要保存的是,老实说没有什么问题:

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

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

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

(注意:无论出于何种原因,切勿在 Unity 中使用“streamwriter”。保存/读取文本文件是完全微不足道的。)

重复。做>>不要< <触摸、思考或在unity中使用“序列化”!无论出于何种原因,永远!< h1>

享受生活!