如何从另一个类编辑矩形的边界

本文关键字:边界 编辑 另一个 | 更新日期: 2023-09-27 18:13:39

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

我做了一个类来检测鼠标是否悬停在StarBounds变量上,然后单击。点击我想编辑StarBounds变量从这个叫做GameFunctions.cs的类

我能做一些像……mgc = new MainGameClass();

当悬停和点击事件被触发时,我可以输入没有错误:德国小姐。StarBounds = new rectangle(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;
    }
}