如何实现选择

时间:2016-11-06 22:28:44

标签: c# xna

我正在尝试制作我的第一个XNA游戏,但我无法弄清楚如何实现以下功能: 我有一个不同类型的对象列表,它们被加载和绘制。通过单击其中一个对象,我需要创建一个相同类型的新对象,并将此新对象添加到另一个列表中。 我已经尝试了下面的代码,我可以添加尽可能多的对象,但我只需要点击第0个对象。(所有这些对象都有一个类型)。当我点击其他对象时没有任何反应。如何使它工作?

for (int i = 0; i < initialPlanets.Count; i++)
{
    MouseState mouse = Mouse.GetState();
    if (initialPlanets[i].CollisionRectangle.Contains(
    mouse.X, mouse.Y) &&
    mouse.LeftButton == ButtonState.Released &&
    previousButtonState == ButtonState.Pressed)
    {
        userPlanetSequence.Add(new Planet(
        initialPlanets[i].Type, 
        GetPlanetSprite(initialPlanets[i].Type),
        new Vector2(100 * (i + 1), 100)));
    }
    previousButtonState = mouse.LeftButton;
}

1 个答案:

答案 0 :(得分:0)

我假设你在点击事件中调用它。

每次循环时都在轮询鼠标状态。第一次浏览时(在零对象上)设置previousButtonState = mouse.LeftButton以便后续循环&#39; if语句总是错误的。

我无法在不知道您最初如何设置previousButtonState的情况下给出一个完整的示例,但是朝着正确方向迈出的一步将是MouseState mouse = Mouse.GetState()置于循环之外,因此您只能获得一次