Ich baue ein Spiel in XNA 3 und ich habe die Ebenen im XML-Format gespeichert. Welche Lösung würden Sie für die Deserialisierung dieser XML-Dateien in Level-Objekten empfehlen? Es muss in der Lage sein, auf der Xbox zu arbeiten.XML XNA Object Deserialization
Antwort
Ich würde nicht empfehlen (de) serialisieren die tatsächlichen Ebenen, erstellen Sie einfach eine einfache Container-Klasse, die die Informationen enthält, um ein Level-Objekt daraus zu konstruieren.
so etwas wie:
[Serializable()]
public class LevelDefinition
{
public Vector3 PlayerStartPosition { get; set; }
public string LevelName { get; set; }
public List<Enemy> Enemies { get; set; }
... etc
}
Diese schöne, saubere XML führen.
Und dann verwenden Sie einfach die XmlSerializer
Klasse, um es zu deserialisieren.
Ich habe es nicht auf der 360 versucht (ich wette, es wird funktionieren), aber XmlSerializer ist eine großartige einfache Möglichkeit zum Speichern/Laden Ihrer Objekt-Grafiken in XML. Grundsätzlich nehmen Sie Ihre XML-Datei und führen Sie xsd.exe dagegen aus. Dadurch wird eine Reihe von C# -Klassen generiert, in die Sie Ihre XML-Datei deserialisieren können. In Ihrem Code schreiben Sie etwas wie:
var serializer = new XmlSerializer(typeof(LevelType));
var level = (LevelType)serializer.Deserialize(streamToYourLevel);
Alles fertig.
Dies könnte funktionieren. Ich werde es versuchen, wenn ich eine Chance bekomme. Vielen Dank! – RCIX
Ich glaube nicht, binäre Serialisierung ist für Zune und XBox verfügbar, aber XmlSerializer funktioniert gut für mich. Ich habe keine Probleme beim Serialisieren von Sammlungen, aber Sie müssen das XmlArrayItem-Attribut für nicht typisierte Sammlungen wie ArrayList verwenden oder dem XmlSerializer-Konstruktor zusätzliche Typinformationen übergeben, aber es ist heutzutage besser und einfacher, List zu verwenden. Das Dictionary kann nicht serialisiert werden, aber Sie können dafür eine Wrapper-Klasse erstellen. Normalerweise speichere ich für jedes Element eine eindeutige ID, die dann als Schlüssel im Wörterbuch verwendet werden kann. Dann kann ich eine Klasse erstellen, die ein Dictionary umschließt, aber als eine Sammlung von Elementen verfügbar gemacht wird.
public class MyItem {
public string ID { get; set; }
:
}
public class MyList : ICollection<MyItem> {
private Dictionary<string,MyItem> items;
public MyList() {
items = new Dictionary<string, MyItem>();
}
void Add(MyItem item) {
items.Add(item.ID, item);
}
:
}
- 1. XML Deserialization Permissions Fehler
- 2. .net DateTime Serialization Deserialization Fehler
- 3. Umgang mit alternativen Eigenschaftennamen in Jackson Deserialization
- 4. jackson deserialization json zu java-objekten
- 5. Fehler Deserialisieren XML Object - same Entitätsname
- 6. Convert Object in xml mit NSXMLParser
- 7. Large Object Heap mit XML-Dokumenten
- 8. XML-Serialisierung der Liste <Object>
- 9. Deserialize XML To Object mit Dynamic
- 10. JavaScript-Authentifizierung JSONString: [object Object], [object Object]
- 11. Problem beim Laden von XML-Daten in XNA
- 12. Serialisieren einer DrawableGameComponent als XML mit XNA ContentTypeWriter Klasse
- 13. C#: XNA vs Nein XNA (Leistung)
- 14. XNA Netzwerkprobleme
- 15. XNA-Kollisionserkennung
- 16. Silverlight/XNA Animation verzögert
- 17. Webseite Nachricht [object object]
- 18. Jackson Deserialisierung von Embedded Java Object
- 19. DeSerialization funktioniert nicht, obwohl ich GetObjectData Methode und Konstruktor implementieren
- 20. wsdl2java Zwei Klassen haben denselben XML-Typname "{http: //***.***.***.***/***/***/***} Object"
- 21. Convert XML-Zeichenfolge in eine Liste meiner Object
- 22. Warum Deserialisierung von XML in Object gibt Nullwert zurück?
- 23. Verknüpfung Inhalt Project (XNA) zu einem nicht XNA Projekt
- 24. XNA- und GUI-Steuerelemente (z. B. Xaml und XNA)
- 25. Warum Object()! = Object() in JavaScript?
- 26. Wie Javascript/jQuery [object Object]
- 27. XNA Music Mischen Echtzeit
- 28. XNA 3D-Physik-Engine
- 29. XNA 2D Spiel Engines
- 30. XNA Graphics Device Extension
Ich gehe damit. Gute Idee! – RCIX
Ich hatte manchmal Probleme, Dinge manchmal zu serialisieren, besonders Sammlungen. Wenn Ihnen das passiert, können Sie sie für die binäre Serialisierung markieren – jasonh