我正在构建我的第一个多游戏共享成就系统原型。这意味着有两个或更多游戏使用一个共享成就数据。我将数据存储在.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平台,但我不知道这种方法是否有效,是吗?
答案 0 :(得分:0)
我会回答我自己的问题。我发现了问题。
所以问题是:
XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Achievement");
我用
替换它XmlNodeList AchievementList = XmlDoc.GetElementsByTagName("Coins");
它有效!!
我认为您现在可以理解问题是什么