C# 如何在Unity3D中保存自定义变量?
我正在为我的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
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,现在它工作了,谢谢。