gpt4 book ai didi

c# - 统一保存一切(快照)

转载 作者:行者123 更新时间:2023-11-30 16:44:22 28 4
gpt4 key购买 nike

我试图在运行我的程序时保存所有内容。我想保存每个游戏对象及其脚本和变量。我知道可以序列化所有内容并将其保存为 XML(以及其他方式/格式,如 JSON)。这将需要大量的工作和时间。该程序将来可能会发生很大变化,因此维护这种方法将非常耗时。所以我更愿意使用不同的方法。

在 unity 中,可以保存和加载场景,我希望有人知道类似的事情。我知道可以像这篇文章一样在运行时保存场景: https://docs.unity3d.com/550/Documentation/ScriptReference/EditorApplication.SaveScene.html

但是,我在这里可能是错的,您仍然需要从文件或其他东西加载变量,所以让这种方法对我也无用。

希望有人指导我一个实现起来不是很费时的方向。

感谢任何帮助!

最佳答案

这就是 MVC 真正派上用场的地方。

它有点高级,但我希望你会发现它有用。

您将所有状态放在一个地方,称之为:Model 类。

您可以在 JSON 之间进行序列化。

您可以通过遍历模型中的状态来创建 View 。 View 以可视方式表示状态。

举个例子,假设你有这个模型类:

[Serializable]
public class Model {
public string List<City> cities = new List<City>();
}

[Serializable]
public class City {
public string name;
public int population;
public List<Person> people;
}

[Serializable]
public class Person {
public string name;
public int age;
}

创建它的一个新实例:

Model model = new Model();
City c = new City();
c.name = "London";
c.population = 8674000;

Person p = new Person();
p.name = "Iggy"
p.age = 28;

c.people.Add(p);

model.cities.Add(c);

您可以将模型序列化为 JSON:

string json = JsonUtility.ToJson(model);

并将 JSON 反序列化为模型:

model = JsonUtility.FromJson<Model>(json);

有了这个状态,您就可以遍历所需的信息并为它们创建游戏对象,以便您能够以可视化的方式表示信息。

关于c# - 统一保存一切(快照),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com