c#LinqXML读取和传输信息

时间:2016-12-03 21:44:15

标签: c# xml sfml

阿罗哈,首先,对不起我的英语知识^^''但我希望你能理解:)

我正在尝试从我的XML文件中读取信息(使用LinqXML)并将其用作未来的变量。

这是我目前正在使用的XML文件的剪辑

<objectgroup name="Object Layer">
  <object id="17" name="A" x="513" y="95" width="510" height="62"/>
  <object id="18" name="B" x="610" y="273" width="476" height="142"/>
  <object id="19" name="C" x="609" y="432" width="320" height="175"/>
  <object id="20" name="D" x="254" y="160" width="33" height="32"/>
  <object id="21" name="E" x="244" y="160" width="33" height="32"/>
</objectgroup>

现在我正试图从中获取信息......

public void ObjectCollision()
{
    var collisionObjects = from q in xmlDoc.Descendants("object")
        select new
        {
            id = (int) q.Attribute("id"),
            xCoordinates = (int) q.Attribute("x"),
            yCoordinates = (int) q.Attribute("y"),
            width = (int) q.Attribute("width"),
            height = (int) q.Attribute("height")
        };

目前,我想将此信息用作我的变量:) 此时,我想将我的变量用作Drawing的坐标。

foreach (var cobj in collisionObjects)
{
    invisTexture = new Texture("Resources/Map/NotVisible.png");
    collisionSprite = new Sprite(invisTexture);
    CollisionRect.TextureRect = new IntRect(cobj.xCoordinates,  cobj.yCoordinates, cobj.width, cobj.height); 
    collisionSprite.TextureRect = CollisionRect.TextureRect;
}

但每当我尝试开始时,我都会收到System.NullReferenceException错误^^ ..

调试器告诉我,我的cobj实际上有正确的信息,而简单Console.WriteLine与这些变量完美配合。

那么,我做错了什么? :)

1 个答案:

答案 0 :(得分:0)

啊......我忘记了CollisionRect = new RectangleShape(); ^^&#39;&#39;是的,我想睡觉的时间......不管怎样,谢谢你的帮助:)