c # - XNA - Hvordan kan jeg redigere en rektangler bundet fra en anden klasse

Indlæg af Hanne Mølgaard Plasc

Problem



Så jeg har dette problem, hvor jeg har en variabel kaldet StarBounds i min primære spil klasse fil. Filen hedder nu MainGameClass.cs med navneområde StarCatcher.


Jeg har lavet en klasse til at opdage, om musen er svævet over StarBounds-variablen og derefter klikker. På klik Jeg vil gerne redigere StarBounds-variablen fra denne anden klasse, der hedder GameFunctions.cs.


Jeg kan gøre noget som ...
MainGameClass mgc=nyt MainGameClass ();


Når hover- og klikhændelsen udløses, kan jeg skrive uden fejl:
mgc.StarBounds=nyt rektangel (0,0,0,0);


Men i selve spillet ændres det ikke. Og også jeg får nogle gange fejl ved at lave 'mgc.StarBounds=nyt rektangel (0,0,0,0);' siger det ikke har en objektreference.

Bedste reference


Jeg tror, ​​det er mest sandsynligt, at det kun er et anvendelsesområde . Undtagelsen skyldes, at mgc er null. Sørg for, at GameFunctions ikke har erklæret en lokal kopi af MainGameClass og refererer til en eksisterende instans. Ellers skal du bruge en statisk variabel for StarBounds som vist i eksemplet. Eksempel,


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