XNA - Как я могу редактировать границы прямоугольников из другого класса - PullRequest
0 голосов
/ 04 ноября 2011

Итак, у меня есть проблема, когда у меня есть переменная под названием StarBounds в моем файле основного игрового класса. Файл теперь называется MainGameClass.cs с пространством имен StarCatcher.

Я создал класс для определения, находится ли мышь над переменной StarBounds, а затем щелкает. При щелчке я хочу отредактировать переменную StarBounds из этого другого класса с именем GameFunctions.cs.

Я могу сделать что-то вроде ... MainGameClass mgc = new MainGameClass ();

Когда срабатывает событие зависания и нажатия, я могу напечатать без ошибок: mgc.StarBounds = новый прямоугольник (0,0,0,0);

Но в реальной игре это не меняется. А также я иногда получаю ошибки при выполнении "mgc.StarBounds = new rectangle (0,0,0,0);" говоря, что у него нет ссылки на объект.

1 Ответ

0 голосов
/ 12 декабря 2011

Я думаю, что это, скорее всего, проблема области действия .Исключение вызвано тем, что 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...