C# XNA-如何编辑来自另一个类的矩形边界

C# XNA-如何编辑来自另一个类的矩形边界,c#,windows,xna,C#,Windows,Xna,所以我有一个问题,在我的主游戏类文件中有一个名为StarBounds的变量。该文件现在名为MainGameClass.cs,名称空间为StarCatcher 我创建了一个类来检测鼠标是否悬停在StarBounds变量上,然后单击。单击后,我想编辑另一个名为GameFunctions.cs的类中的StarBounds变量 我能做一些像。。。 MainGameClass mgc=新的MainGameClass() 当鼠标悬停并单击事件被触发时,我可以无错误地键入: mgc.StarBounds=新矩

所以我有一个问题,在我的主游戏类文件中有一个名为StarBounds的变量。该文件现在名为MainGameClass.cs,名称空间为StarCatcher

我创建了一个类来检测鼠标是否悬停在StarBounds变量上,然后单击。单击后,我想编辑另一个名为GameFunctions.cs的类中的StarBounds变量

我能做一些像。。。 MainGameClass mgc=新的MainGameClass()

当鼠标悬停并单击事件被触发时,我可以无错误地键入: mgc.StarBounds=新矩形(0,0,0,0)


但在实际游戏中,它并没有改变。而且我有时在执行“mgc.StarBounds=new rectangle(0,0,0,0);”时出错,说它没有对象引用。

我认为这很可能只是一个范围问题。由于mgc为空,导致异常。确保GameFunctions没有声明MainGameClass的本地副本,并且正在引用预先存在的实例。否则,对StarBounds使用静态变量,如示例所示。例如

public class MainGameClass {
    public static Rectangle StarBounds;

    public void HandleInput () {
        // if GameFunctions.ClickedWithinStarBounds(mouse)
        // GameFunctions.OnClickStarBounds()
    }
}

public class GameFunctions {
    public static void ClickedWithinStarBounds(MouseState mouse) {
        // create a rectangle around the mouse (ie. cursor) for the detection area
        // return left mouse button is down or pressed && IsWithinStarBounds
    }

    public static bool IsWithingStarBounds(Rectangle area) {
        return (MainGameClass.StarBounds.Intersects(area);
    }

    public static void OnClickStarBounds() {
        MainGameClass.StarBounds = Rectangle.Empty;
    }
}

您应该将此变量的引用传递给应该修改其值的代码。