第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在運(yùn)行時(shí)保存和更新“.xml”文件?

如何在運(yùn)行時(shí)保存和更新“.xml”文件?

C#
ABOUTYOU 2023-07-09 15:14:49
我正在開發(fā)一個(gè)游戲項(xiàng)目,我們將玩家收集的物品保存到 .xml 文件中,我們這樣做是為了跟蹤玩家的開發(fā)過程。例如,您要進(jìn)入地牢殺死敵人。殺死敵人后,游戲會(huì)隨機(jī)掉落物品,如果您想將該物品添加到庫存中,只需單擊它即可。這就是問題所在。將新項(xiàng)目保存到 xml 文檔的功能工作正常,但如果我手動(dòng)刷新 xml 頁面或重新啟動(dòng)游戲,它只會(huì)添加收集的項(xiàng)目。(在這種情況下我們不希望)有什么方法或解決方法可以讓我在游戲運(yùn)行時(shí)更新 xml 文檔并保存它?我嘗試使用“XmlTextWriter”類來解決該問題,但最終會(huì)從數(shù)據(jù)庫中刪除所有項(xiàng)目并開始再次插入所有項(xiàng)目。這讓我思考性能。這是將新項(xiàng)目保存到數(shù)據(jù)庫的函數(shù)?!癈ontentDataCarrier”是包含有關(guān)項(xiàng)目的信息的類。(ID、名稱、效果、售價(jià)等) 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.}我希望在運(yùn)行時(shí)將玩家收集的項(xiàng)目保存到 xml 文件中。
查看完整描述

1 回答

?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用 XMLSerializer,我可以隨時(shí)從“.xml”文件中保存和獲取數(shù)據(jù)。


using System.Collections.Generic;

using System.IO;

using System.Xml.Serialization;

using UnityEngine;


[DisallowMultipleComponent]

internal sealed class XMLManager : MonoBehaviour

{

? ? public ItemDatabase ItemDatabase = new ItemDatabase();


? ? public void SaveItem()

? ? {

? ? ? ? var xmlSerializer = new XmlSerializer(typeof(ItemDatabase));

? ? ? ? var fileStream = new FileStream(Application.dataPath + "/StreamingFiles/XML/Items.xml", FileMode.Create);


? ? ? ? xmlSerializer.Serialize(fileStream, ItemDatabase);


? ? ? ? fileStream.Close();

? ? }


? ? public void LoadItem()

? ? {

? ? ? ? var xmlSerializer = new XmlSerializer(typeof(ItemDatabase));

? ? ? ? var fileStream = new FileStream(Application.dataPath + "/StreamingFiles/XML/Items.xml", FileMode.Open);


? ? ? ? ItemDatabase = xmlSerializer.Deserialize(fileStream) as ItemDatabase;


? ? ? ? fileStream.Close();

? ? }

}


[System.Serializable]

public sealed class Item

{

? ? public string Name;

? ? public string Description;

? ? public int Damage;

? ? public Source Element;


? ? public enum Source { Fire, Water, Air };

}


[System.Serializable]

public sealed class ItemDatabase

{

? ? public List<Item> items = new List<Item>();

}

這是適合我的代碼。


希望這能幫助那里的人。


查看完整回答
反對 回復(fù) 2023-07-09
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)