我试图在运行程序时保存所有内容。我想用脚本和变量保存每个Gameobject。我知道可以序列化所有内容并将其保存为XML(以及其他方式/格式,如JSON)。这将需要大量的工作和时间。该程序将来可能会发生很多变化,因此维护这种方法的维护将非常耗时。所以我更愿意使用不同的方法。
在团结中,它可以保存和加载场景,我希望有人知道类似的东西。我知道可以像运行本文一样在运行时保存场景: https://docs.unity3d.com/550/Documentation/ScriptReference/EditorApplication.SaveScene.html
但是,我可能在这里错了,你仍然需要从文件或其他东西加载变量,所以这个方法对我来说也没用。
希望有人指导我实施的方向并不是非常耗时。
任何帮助表示赞赏!
答案 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,以便您能够以可视方式表示信息。