2013-06-24 16 views
5

Ktoś proszę o pomoc! To jest dla mnie naprawdę mylące. Nie mogę znaleźć nikogo w Internecie, który mógłby to wyjaśnić wystarczająco dobrze. Oto, czego potrzebuję: Potrzebuję kogoś, kto wytłumaczy, jak utworzyć plik XML w Unity. Ludzie powiedzieli mi, żebym spojrzał na pisarza strumienia. Szukałem tego, ale nikt nie dał samouczka, jak to napisać. Nie wiem też, co to jest .NET, więc proszę, nie udziel mi tego jako odpowiedzi. Przejrzałem także stronę microsoft dla plików XML, ale nie mogę znaleźć właściwej odpowiedzi. To jest dosłownie wszystko szukam:Jak napisać plik XML w języku C# w Unity?

Chcę, aby móc napisać coś takiego:

<Player> 

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

<\Player> 

Jak mogę dokonać takiego pliku i zaimportować go do jedności? Jak mogę uczynić Unity czytać ten plik i wyciągać informacje z czegoś takiego? Proszę, jestem w sumie n00b w całej tej dziedzinie .NET i XML.

Odpowiedz

14

Say masz gracza klasy, który wygląda tak:

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

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

Powyżej znajduje się pełna round-trip, aby zacząć:

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 jest:

<?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> 

I zgadywać player jest dokładnie taki sam jak oryginalny obiekt, który serializowaliśmy.

Jeśli chcesz serializacji do/deserializowania z plików możesz zrobić coś takiego:

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

EDIT:

JEŚLI chcesz dokładnie XML można pokazać:

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; 
} 
+0

Ok to jest interesujące. Proszę wyjaśnić, co jest serializowane i deserializować? Dzięki i zadziwiająca odpowiedź – Abraham

+0

Czy możesz wyjaśnić te części: xmls.Serialize (sw, new Player {Level = 5, Health = 500}); string xml = sw.ToString(); Odtwarzacz gracza = xmls.Deserialize (nowy StringReader (xml)) jako odtwarzacz; – Abraham

+1

* Serialize * tworzy reprezentację XML obiektów. * Deserialize * działa odwrotnie: produkuje obiekty z ich reprezentacji XML. – Pragmateek

Powiązane problemy