【问题标题】:Unity save everything (snapshot)Unity 保存一切(快照)
【发布时间】:2017-04-28 17:52:08
【问题描述】:

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

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

但是,我在这里可能错了,您仍然需要从文件或其他东西中加载变量,因此使这种方法对我也无用。

希望有人指导我朝一个实施起来不太耗时的方向。

任何帮助表示赞赏!

【问题讨论】:

    标签: c# unity3d hierarchy scene


    【解决方案1】:

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

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

    你的所有状态都集中在一个地方,称之为:Model class。

    您可以在 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);
    

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

    string json = JsonUtility.ToJson(model);
    

    并将 JSON 反序列化为模型:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-23
      • 2020-01-16
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多