[英]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.