Я только что начал пытаться сделать простую игру с XNA 3.1, чтобы помочь мне изучить C# и XNA. Я столкнулся с определенной интересной проблемой, как бы то ни было. Во всех учебных руководствах каждый, как предполагается, передает GraphicsDevice при инстанцировании нового объекта spriteBatch как это:
spriteBatch = new SpriteBatch(GraphicsDevice);
Можно было бы даже сделать это:
GraphicsDevice objGraphics = new graphics.GraphicsDevice;
spriteBatch = new SpriteBatch(objGraphics);
где графикой является GraphicsDeviceManager. Однако, неважно, который версия я пробую, я всегда получаю ArgumentNullException, когда я пытаюсь передать объект GraphicsDevice конструктору spriteBatch. Почти каждое учебное руководство, которое я нашел, дает первый, и только один упомянул вторую опцию. Кто-либо еще столкнулся с подобной ошибкой или знает то, что могло вызывать это? Я работаю в Windows 7 x64 с Visual Studio 2008.
Править:
Я, кажется, нашел проблему. Я пытался выполнить тот код в конструкторе (который является, где я предположил, что он, как предполагалось, пошел). Я сделал немного поиска с помощью Google и нашел ответ здесь. Спасибо за справку.
Я помещаю ответ здесь для полноты картины.
Код
spriteBatch = new SpriteBatch(GraphicsDevice);
Может быть выполнен только в методе LoadContent () класса Game. Я вставлял его в конструктор, после чего объект GraphicsDevice не был определен согласно одному из ответов на этот вопрос .