我正在开发一个游戏项目,我们将玩家收集的物品保存到 .xml 文件中,我们这样做是为了跟踪玩家的开发过程。例如,您要进入地牢杀死敌人。杀死敌人后,游戏会随机掉落物品,如果您想将该物品添加到库存中,只需单击它即可。这就是问题所在。将新项目保存到 xml 文档的功能工作正常,但如果我手动刷新 xml 页面或重新启动游戏,它只会添加收集的项目。(在这种情况下我们不希望)有什么方法或解决方法可以让我在游戏运行时更新 xml 文档并保存它?
我尝试使用“XmlTextWriter”类来解决该问题,但最终会从数据库中删除所有项目并开始再次插入所有项目。这让我思考性能。
这是将新项目保存到数据库的函数。“ContentDataCarrier”是包含有关项目的信息的类。(ID、名称、效果、售价等)
public void AddItemToDatabase(ContentDataCarrier contentDataCarrier)
{
var databaseDocument = new XmlDocument();
// Load the database XML document with the file path.
// Note: We need to make sure if "AssetDatabase.GetAssetPath()" function also works at runtime.
databaseDocument.Load(AssetDatabase.GetAssetPath(_itemProgressDatabase));
// Now create new nodes for each property that "contentDataCarrier" has.
XmlNode itemWrapperNode = databaseDocument.CreateElement("item");
XmlNode idNode = databaseDocument.CreateElement("ID");
idNode.InnerText = LastAddedItemID++.ToString();
XmlNode levelNode = databaseDocument.CreateElement("level");
levelNode.InnerText = contentDataCarrier.Level.ToString();
XmlNode nameNode = databaseDocument.CreateElement("name");
nameNode.InnerText = contentDataCarrier.Name;
XmlNode descriptionNode = databaseDocument.CreateElement("description");
descriptionNode.InnerText = contentDataCarrier.Description;
XmlNode spriteNode = databaseDocument.CreateElement("sprite");
spriteNode.InnerText = "null"; // Somehow find a way to save sprite id and load it into game.
}
我希望在运行时将玩家收集的项目保存到 xml 文件中。
炎炎设计
相关分类