繁体   English   中英

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

[英]XNA - How Can I Edit A Rectangles Bounds From Another Class

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

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

我可以做类似的事情... MainGameClass mgc = new MainGameClass();

当触发悬停和单击事件时,我可以没有错误地输入:mgc.StarBounds =新的矩形(0,0,0,0);

但是在实际游戏中它并没有改变。 而且有时在执行“ mgc.StarBounds =新矩形(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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM