Unity3D保存和加载XML文件中的数据不起作用

本文关键字:数据 不起作用 文件 XML 保存 加载 Unity3D | 更新日期: 2023-09-27 18:07:10

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

所以我想让我的程序加载并修改其中的硬币数量。

这是我的XML:

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

My Code:

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();
    }
}

我将公共void分配给一个按钮,这样我就可以修改硬币,然后保存或加载它。但是似乎加载和保存功能不会做任何事情,xml文件什么都没有发生。

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

Unity3D保存和加载XML文件中的数据不起作用

我将回答我自己的问题。我找到问题了。

所以问题是:

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

我将它替换为

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

它工作!!

我想你现在可以明白问题是什么了