Unity保存所有内容(快照)

时间:2017-04-28 09:19:01

标签: c# unity3d hierarchy scene

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

在团结中,它可以保存和加载场景,我希望有人知道类似的东西。我知道可以像运行本文一样在运行时保存场景: https://docs.unity3d.com/550/Documentation/ScriptReference/EditorApplication.SaveScene.html

但是,我可能在这里错了,你仍然需要从文件或其他东西加载变量,所以这个方法对我来说也没用。

希望有人指导我实施的方向并不是非常耗时。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

这就是MVC非常方便的地方。

它有点先进,但我希望你会觉得它很有用。

您将所有州置于一个地方,称之为:Model课程。

您可以序列化 JSON

您可以通过迭代模型中的状态来创建视图。视图以可视方式表示状态。

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

[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);

您可以将Model序列化为JSON:

string json = JsonUtility.ToJson(model);

将JSON反序列化为Model:

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

拥有此状态后,您可以迭代所需信息并为其创建GameObjects,以便您能够以可视方式表示信息。