Unity专题

XML序列化

2017-11-22  本文已影响4人  _Arturia

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;
using System.IO;

public class SaveXML : MonoBehaviour {

public class Towers{
    public Towers(){
    }

    public string name;
    public Vector3 pos;
    public Towers(Vector3 mpos , string mName){
        pos=mpos;
        name = mName;
    }

}


void Start () {
    List<Towers> mTa = new List<Towers> ();

    for (int i = 0; i < this.transform.childCount; i++) {
        string cna = this.transform.GetChild (i).gameObject.name;
        mTa.Add (new Towers (this.transform.GetChild (i).position, cna));
    }

    XmlSerializer xs = new XmlSerializer (typeof(List<Towers>));

    try{
        FileStream fs=new FileStream(Application.dataPath+"/Tower.xml",FileMode.Create);
        xs.Serialize(fs,mTa);
    }catch(System.Exception e){
        print (e);
    }       

}

}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml.Serialization;
using System.IO;

public class LoadXML : MonoBehaviour {
private GameObject mTower;

public class Towers{
    public Towers(){
    }

    public string name;
    public Vector3 pos;
    public Towers(Vector3 mpos , string mName){
        pos=mpos;
        name = mName;
    }

}

void Start () {
    mTower = Resources.Load<GameObject> ("Ta");
    List<Towers> mTa = new List<Towers> ();

    XmlSerializer xs = new XmlSerializer (typeof(List<Towers>));

    try {
        FileStream fs = new FileStream (Application.dataPath + "/Tower.xml", FileMode.Open);
        mTa = (List<Towers>)xs.Deserialize (fs);
        fs.Close ();
    } catch (System.Exception e) {
        print (e);
    }

    for (int i = 0; i < mTa.Count; i++) {
        GameObject go = (GameObject)Instantiate (mTower);
        go.transform.position = mTa [i].pos;
        go.name = mTa [i].name;
        go.transform.SetParent (this.transform);
    }

}

}

上一篇 下一篇

猜你喜欢

热点阅读