5

誰か助けてください!これは私にとって本当に混乱しています。これを十分に説明できる人をインターネット上で見つけることができません。Unity で XML ファイルを作成する方法を説明してくれる人が必要です。ストリーム ライターを調べるように言われました。私はこれを検索しましたが、誰もそれを書く方法についてのチュートリアルを提供していません. また、.NETが何であるかもわかりませんので、答えとして教えないでください。Microsoft の XML ファイルのページも調べましたが、正しい答えが見つかりません。これは文字通り私が探しているすべてです:

私はこのようなものを書くことができるようにしたい:

<Player>

    <Level>5<\Level>  
    <Health>500<\Health>  

<\Player>

このようなファイルを作成して Unity にインポートするにはどうすればよいですか? Unityにこのファイルを読み取らせ、このようなものから情報を抽出するにはどうすればよいですか? 私は、この .NET と XML のこと全体にまったく無頓着です。

4

1 に答える 1

15

次のようなPlayerクラスがあるとします。

[XmlRoot]
public class Player
{
    [XmlElement]
    public int Level { get; set; }

    [XmlElement]
    public int Health { get; set; }
}

開始するための完全な往復は次のとおりです。

XmlSerializer xmls = new XmlSerializer(typeof(Player));

StringWriter sw = new StringWriter();
xmls.Serialize(sw, new Player { Level = 5, Health = 500 });
string xml = sw.ToString();

Player player = xmls.Deserialize(new StringReader(xml)) as Player;

xmlは次のとおりです。

<?xml version="1.0" encoding="utf-16"?>
<Player xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Level>5</Level>
  <Health>500</Health>
</Player>

そして、 playerは、シリアル化した元のオブジェクトとまったく同じだと思います。

ファイルへのシリアル化/ファイルからの逆シリアル化を行う場合は、次のようにすることができます。

using (var stream = File.OpenWrite("my_player.xml"))
{
    xmls.Serialize(stream, new Player { Level = 5, Health = 500 });
}

Player player = null;
using (var stream = File.OpenRead("my_player.xml"))
{
    player = xmls.Deserialize(stream) as Player;
}

編集:

表示する XML が正確に必要な場合:

XmlSerializer xmls = new XmlSerializer(typeof(Player));

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true };
using (var stream = File.OpenWrite("my_player.xml"))
{
    using (var xmlWriter = XmlWriter.Create(stream, settings))
    {
        xmls.Serialize(xmlWriter, new Player { Level = 5, Health = 500 }, ns);
    }
}

Player player = null;
using (var stream = File.OpenRead("my_player.xml"))
{
    player = xmls.Deserialize(stream) as Player;
}
于 2013-06-24T23:32:13.620 に答える