C# XNA-如何编辑来自另一个类的矩形边界
所以我有一个问题,在我的主游戏类文件中有一个名为StarBounds的变量。该文件现在名为MainGameClass.cs,名称空间为StarCatcher 我创建了一个类来检测鼠标是否悬停在StarBounds变量上,然后单击。单击后,我想编辑另一个名为GameFunctions.cs的类中的StarBounds变量 我能做一些像。。。 MainGameClass mgc=新的MainGameClass() 当鼠标悬停并单击事件被触发时,我可以无错误地键入: mgc.StarBounds=新矩形(0,0,0,0)C# XNA-如何编辑来自另一个类的矩形边界,c#,windows,xna,C#,Windows,Xna,所以我有一个问题,在我的主游戏类文件中有一个名为StarBounds的变量。该文件现在名为MainGameClass.cs,名称空间为StarCatcher 我创建了一个类来检测鼠标是否悬停在StarBounds变量上,然后单击。单击后,我想编辑另一个名为GameFunctions.cs的类中的StarBounds变量 我能做一些像。。。 MainGameClass mgc=新的MainGameClass() 当鼠标悬停并单击事件被触发时,我可以无错误地键入: mgc.StarBounds=新矩
但在实际游戏中,它并没有改变。而且我有时在执行“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;
}
}
您应该将此变量的引用传递给应该修改其值的代码。