public void Load() { Debug.Log("persistent data path:" + Application.persistentDataPath); if (false == File.Exists(Application.persistentDataPath + "/playerdata.dat")) { return; } BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(Application.persistentDataPath + "/playerdata.dat", FileMode.Open); SaveData data = (SaveData)bf.Deserialize(file); gold = data.gold; citadel.level = data.citadelLevel; if (data.version == SAVE_FORMAT_VERSION) { waveLevel = data.waveLevel; foreach (var itr in data.heros) { HeroUnit.SaveData saveData = itr.Value; HeroUnit hero = citadel.heros [saveData.id]; hero.level = saveData.level; hero.purchased = saveData.purchased; hero.slotIndex = saveData.slotIndex; hero.equiped = saveData.equiped; if (true == hero.equiped) { citadel.citadelParts [hero.slotIndex].slot.EquipUnit(hero); } } if (null != data.citadelParts) { for (int i = 0; i < citadel.citadelParts.Length; i++) { if (null == data.citadelParts [i]) { continue; } if (true == data.citadelParts [i].active) { citadel.citadelParts [i].gameObject.SetActive(true); } } } for (int i = 0; i < data.citadelBuffs.Length; i++) { CitadelBuff buff = citadel.citadelBuffs [i]; buff.level = data.citadelBuffs [i].level; } } file.Close(); }
public void Save() { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Application.persistentDataPath + "/playerdata.dat"); SaveData data = new SaveData(); data.version = SAVE_FORMAT_VERSION; data.gold = gold; data.waveLevel = waveLevel; data.citadelLevel = citadel.level; data.heros = new Dictionary <string, HeroUnit.SaveData> (); foreach (var itr in citadel.heros) { HeroUnit hero = itr.Value; if (false == hero.purchased) { continue; } HeroUnit.SaveData saveData = new HeroUnit.SaveData(); saveData.id = hero.info.id; saveData.level = hero.level; saveData.purchased = hero.purchased; saveData.slotIndex = hero.slotIndex; saveData.equiped = hero.equiped; data.heros [hero.info.id] = saveData; } data.citadelParts = new CitadelParts.SaveData[citadel.citadelParts.Length]; for (int i = 0; i < citadel.citadelParts.Length; i++) { CitadelParts.SaveData saveData = new CitadelParts.SaveData(); saveData.active = citadel.citadelParts [i].gameObject.activeSelf; data.citadelParts [i] = saveData; } data.citadelBuffs = new CitadelBuff.SaveData[citadel.citadelBuffs.Length]; for (int i = 0; i < citadel.citadelBuffs.Length; i++) { CitadelBuff.SaveData saveData = new CitadelBuff.SaveData(); saveData.level = citadel.citadelBuffs [i].level; data.citadelBuffs [i] = saveData; } bf.Serialize(file, data); file.Close(); }