我正在为 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中使用“序列化”!无论出于何种原因,永远!
享受生活!
关于c# - 如何在 Unity3D 中保存自定义变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694869/