繁体   English   中英

Unity3D无法从XML文件保存和加载数据

[英]Unity3D Save and Load data from an XML file doesn't work

我正在为多游戏共享成就系统构建我的第一个原型。 这意味着有两个或多个使用一个共享成就数据的游戏。 我将数据存储在.xml文件中,目前xml仅包含硬币数据。

所以我希望我的程序从中加载和修改硬币的数量。

这是我的XML:

<Achievement><Coins>800</Coins></Achievement>

我的代码:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

public class XMLTest : MonoBehaviour {

string Filelocation, FileName;

private Text CoinsText;

public int Coins;
public int Price;
void Start () {
    CoinsText = GameObject.Find("CoinsText").GetComponent<Text>();
    Filelocation = "E:/Projek/Projek Pak Suprapedi/XML Test/";
    FileName = "Coins.xml";
}

public void WriteToXML()
{
    XmlDocument XmlDoc = new XmlDocument();
    if(File.Exists(Filelocation + FileName))
    {
        XmlDoc.Load(Path.Combine(Filelocation, FileName));
        XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Achievement");
        foreach(XmlNode node in AchievementList)
        {
            if(node.Name == "Coins")
            {
                node.InnerText = Coins.ToString();
            }
        }
        XmlDoc.Save(Path.Combine(Filelocation, FileName));
    }
}

public void LoadFromXML()
{
    XmlDocument XmlDoc = new XmlDocument();
    if(File.Exists(Filelocation + FileName))
    {
        XmlDoc.Load(Path.Combine(Filelocation,FileName));
        XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Achievement");
        foreach(XmlNode node in AchievementList)
        {
            if(node.Name == "Coins")
            {
                Coins = int.Parse(node.InnerText);
            }
        }
    }
}

public void Buy()
{
    Coins -= Price;
}

public void GetMoney()
{
    Coins += Price;
}

void Update()
{
        CoinsText.text = "Your Coins : " + Coins.ToString();
    }
}

我将公共空白分配给按钮,以便我可以修改硬币,然后保存或加载它。 但是,似乎加载和保存功能无法执行任何操作,xml文件没有任何反应。

我会将游戏部署到Android平台上,但是我不知道这种方法是否可行,对吗?

我会回答我自己的问题。 我发现了问题。

所以问题是:

XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Achievement");

我将其替换为

XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Coins");

而且有效!

我想你现在可以理解问题所在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM