2011-11-03 67 views
0

所以我有這個問題,我的主要遊戲類文件中有一個名爲StarBounds的變量。該文件現在稱爲MainGameClass.cs,其名稱空間爲StarCatcher。XNA - 如何編輯另一個類的矩形邊界

我做了一個類來檢測鼠標懸停在StarBounds變量上,然後單擊。單擊時,我想從另一個名爲GameFunctions.cs的類中編輯StarBounds變量。

我能夠做類似... MainGameClass mgc = new MainGameClass();

當懸停和點擊事件被觸發時,我可以輸入沒有錯誤: mgc.StarBounds = new rectangle(0,0,0,0);

但在實際的遊戲中並沒有改變。而且我在執行「mgc.StarBounds = new rectangle(0,0,0,0);」時也會出錯說它沒有對象引用。

+0

您應該將對此變量的引用傳遞給應該修改其值的代碼。 – neeKo

+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; 
    } 
}