【Unity開發(fā)教程】從零開始開發(fā)i wanna系列游戲(3)讀取游戲存檔

太陽戰(zhàn)士索拉爾來啦,感覺unity有個bug,路徑設(shè)置對了依然會找不到,不如直接公開,把data文件拖進(jìn)去using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Xml;
public class ResourceRvc : MonoBehaviour
{
public static ResourceRvc Instance; // 單例
public XmlDocument dataDocument; // 用于存儲XML文檔
public XmlNodeList dataNodeList; // 用于存儲XML節(jié)點列表
public TextAsset xmlFile; // 在Inspector面板中手動設(shè)置
public void Initsvc()
{
Instance = this; // 初始化單例
InitSaveDate(); // 初始化存檔數(shù)據(jù)
}
private void InitSaveDate()
{
dataDocument = new XmlDocument(); // 創(chuàng)建新的XML文檔
dataDocument.LoadXml(xmlFile.text); // 加載XML文件內(nèi)容
dataNodeList = dataDocument.SelectSingleNode("data").ChildNodes; // 獲取"data"節(jié)點的所有子節(jié)點
}
public struct SaveData // 存檔數(shù)據(jù)結(jié)構(gòu)
{
public string state; // 狀態(tài)
public int deathCount; // 死亡次數(shù)
public string time; // 時間
public string savePosition; // 存檔位置
// public string 最好把角色的子集狀態(tài)也儲存
}
public SaveData GetSaveData(int dataChooseNum) // 獲取存檔數(shù)據(jù)
{
XmlElement element = (XmlElement)dataNodeList[dataChooseNum]; // 獲取指定索引的節(jié)點
SaveData saveData = new SaveData(); // 創(chuàng)建新的存檔數(shù)據(jù)
saveData.state = element.GetAttribute("state"); // 獲取狀態(tài)
saveData.deathCount = int.Parse(element.GetAttribute("death")); // 獲取死亡次數(shù)
saveData.time = element.GetAttribute("time"); // 獲取時間
saveData.savePosition = element.GetAttribute("save_position"); // 獲取存檔位置
return saveData; // 返回存檔數(shù)據(jù)
}
}