private static void LoadObjects()
    {
        string path = EditorUtility.OpenFilePanel("Select file", Application.dataPath, "xml");

        var objs = MyXMLSerializer.Load(path);

        foreach (var o in objs)
        {
            var prefab  = Resources.Load <GameObject>(o.PrefabName);
            var tempObj = Object.Instantiate(prefab, o.Pos, o.Rot);
            tempObj.transform.localScale = o.Scale;
            tempObj.name = o.PrefabName;
            if (o.hasRigidbody)
            {
                var rb = tempObj.AddComponent <Rigidbody>();
                rb.mass = o.mass;
            }
        }
    }
    private static void SaveObjects()
    {
        string path = EditorUtility.SaveFilePanel("Select file", Application.dataPath, "LevelData", "xml");

        var objs     = Object.FindObjectsOfType <GameObject>();
        var objsList = new List <SerializableGameObject>();

        foreach (var o in objs)
        {
            var rb = o.GetComponent <Rigidbody>();
            objsList.Add(new SerializableGameObject
            {
                PrefabName   = o.name,
                Pos          = o.transform.position,
                Rot          = o.transform.rotation,
                Scale        = o.transform.localScale,
                hasRigidbody = rb != null,
                mass         = rb ? rb.mass : 0
            });
        }

        MyXMLSerializer.Save(objsList.ToArray(), path);
    }