在XNA中加载XML时只获取最后一个值

本文关键字:获取 最后一个 XML XNA 加载 | 更新日期: 2023-09-27 18:16:37

我正在制作一款小型XNA游戏,为了改变我拥有"门户"的地图,我将有关这些门户的信息存储在XML文件中。

<?xml version="1.0" encoding="utf-8"?>
<XnaContent>
    <Asset Type ="Vars.Portals[]">
        <Item>
            <Position>319</Position>
            <Destination>Map002</Destination>
        </Item>
        <Item>
            <Position>139</Position>
            <Destination>Map001</Destination>
        </Item>
        <Item>
            <Position>319</Position>
            <Destination>Map001</Destination>
        </Item>
    </Asset>
</XnaContent>

在Game1.cs文件中我将"portal"声明为变量

Portals[] portal;

,然后在loadContent区域将XML文件加载到门户。

portal = Content.Load<Portals[]>("Portals/Test");

不幸的是,这就是我的问题发生的地方,因为当我试图使用

portal[].position

与[]中的任何数字相匹配,我将得到相同的值,即列表中的最后一个值。我看了所有的值,而在视觉基础上运行它,他们似乎都是一样的。有什么明显的我没注意到吗。我是使用XML的新手。数据保存在我的Vars命名空间中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Vars
{
public class Portals
{
    #region Position
    private static int StorePosition = 0;
    public int Position
    {
        get { return StorePosition; }
        set { StorePosition = value; }
    }
    #endregion
    #region Destination
    private static string StoreDestination = "";
    public string Destination
    {
        get { return StoreDestination; }
        set { StoreDestination = value; }
    }
    #endregion
    }
}

在XNA中加载XML时只获取最后一个值

当然你会得到相同的值;您的属性使用静态字段作为其后台存储。静态成员在类的所有实例之间共享。