我试图创建一个XML Manager类,我的任何其他类都可以访问该类以按需保存,加载或删除信息。由于此类的性质,在任何给定时间都应该只存在一个,并且任何类别都可以访问。
我已经研究了静态类和单例类之间的区别,但是,我不确定应该实现哪个还是应该实现它们。
到目前为止,我有一个标准的课程,我不确定从这里开始应该去哪里:
public class XMLManager
{
//List of items
public ItemDatabase itemDB;
//Save Function
public void SaveItems()
{
//Create a new XML File
XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
FileStream stream = new FileStream(Application.dataPath + "/StreamingFiles/XML/item_data.xml", FileMode.Create);
serializer.Serialize(stream, itemDB);
stream.Close();
}
//Load Function
public void LoadItems()
{
//Open an XML File
if (File.Exists(Application.dataPath + "/StreamingFiles/XML/item_data.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(ItemDatabase));
FileStream stream = new FileStream(Application.dataPath + "/StreamingFiles/XML/item_data.xml", FileMode.Open);
itemDB = serializer.Deserialize(stream) as ItemDatabase;
stream.Close();
}
else
{
Debug.LogError("File not found!");
}
}
//Delete Function
public void DeleteItems()
{
//Delete an XML File
File.Delete(Application.dataPath + "/StreamingFiles/XML/item_data.xml");
}
}
[System.Serializable]
public class ItemEntry
{
public string ItemName;
public SaveMaterial material;
public int Value;
}
[System.Serializable]
public class ItemDatabase
{
[XmlArray("CombatEquipment")]
public List<ItemEntry> list = new List<ItemEntry>();
}
public enum SaveMaterial
{
Wood,
Copper,
Iron,
Steel,
Obsidian
}
仅作记录,我了解这可能不是解决此问题的最完美方法,但是,这是在我的用例中适用的方法。
答案 0 :(得分:1)
取决于您想从该课程中得到什么。静态和单例都几乎完成相同的工作,只是有一点点差异。这里Difference between static class and singleton pattern?强调了主要区别。
除非您希望您的类实现类,并且希望保持简单,否则请选择静态。
以用于生成日志或处理文件的方法为例。
Debug.LogError("Some String");
File.Delete("FullPathToFile");
它们也是静态类。参见Debug Class和File Class。