Нечетное «Ссылка на объект не установлена ​​для экземпляра объекта» с участием xWinForms - PullRequest
0 голосов
/ 05 апреля 2010

Я пытался заставить библиотеку xWinForms 3.0 (библиотеку с поддержкой форм в xna) работать с моим проектом C # XNA Game, но я продолжаю сталкиваться с той же проблемой. Я добавляю ссылку на мой проект, вставляю оператор using, объявляю переменную formCollection и затем пытаюсь ее инициализировать.

Всякий раз, когда я запускаю проект, меня останавливают в этой строке:

formCollection = new FormCollection(this.Window, Services, ref graphics);

Это дает мне ошибку:

Исключение System.NullReferenceException было обработано. Message = "Object ссылка не установлена ​​на экземпляр объекта. "
Source = "Microsoft.Xna.Framework" StackTrace: в Microsoft.Xna.Framework.Graphics.VertexShader..ctor (GraphicsDevice graphicsDevice, Byte [] shaderCode) в Microsoft.Xna.Framework.Graphics.SpriteBatch.ConstructPlatformData () в Microsoft.Xna.Framework.Graphics.SpriteBatch..ctor (GraphicsDevice GraphicsDevice) в xWinFormsLib.FormCollection..ctor (окно GameWindow, сервисы IServiceProvider, GraphicsDeviceManager & graphics) в GameSolution.Game2.LoadContent () в C: \ Users \ Владелец \ Documents \ School \ Year 3 \ Winter \ Soen 390 \ TeamWTF_3 \ SourceCode \ GameSolution \ GameSolution \ Game2.cs: строка 45 в Microsoft.Xna.Framework.Game.Initialize () в GameSolution.Game2.Initialize () в C: \ Users \ Владелец \ Documents \ School \ Year 3 \ Winter \ Soen 390 \ TeamWTF_3 \ SourceCode \ GameSolution \ GameSolution \ Game2.cs: строка 37 в Microsoft.Xna.Framework.Game.Run () в GameSolution.Program.Main (String [] args) в C: \ Users \ Владелец \ Documents \ School \ Year 3 \ Winter \ Soen 390 \ TeamWTF_3 \ SourceCode \ GameSolution \ GameSolution \ Program.cs: строка 14 InnerException:

В загруженном мною проекте, использующем xWinForms, я вставил следующий код, и он скомпилировался и не запустился. но когда я помещаю это в свой проект, я получаю ошибку. Я делаю какую-то глупую ошибку по поводу включения DLL или что-то? Я занимаюсь этим часами и не могу найти ничего, что могло бы вызвать это.

using xWinFormsLib; 

public class Game2 : Microsoft.Xna.Framework.Game 
{ 
    GraphicsDeviceManager graphics; 
    SpriteBatch spriteBatch; 

    FormCollection formCollection; 

    public Game2() 
    { 
        graphics = new GraphicsDeviceManager(this); 
        Content.RootDirectory = "Content"; 
    } 

    protected override void Initialize() 
    { 
        // TODO: Add your initialization logic here 

        base.Initialize(); 
    } 

    protected override void LoadContent() 
    { 
        // Create a new SpriteBatch, which can be used to draw textures. 
        spriteBatch = new SpriteBatch(GraphicsDevice); 

        formCollection = new FormCollection(this.Window, Services, ref graphics); 
    } 

    protected override void Update(GameTime gameTime) 
    { 
        base.Update(gameTime); 
    } 

    protected override void Draw(GameTime gameTime) 
    { 
        base.Draw(gameTime); 
    } 
} 

Любая помощь будет принята с благодарностью ._.

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

Я наконец понял, что случилось ... Казалось, мне нужен какой-то конфигурационный файл. Библиотека, кажется, для XNA 3.0, в то время как я использовал 3.1 Конфигурационный файл, казалось, делал своего рода сопоставление между ними. После того, как я добавил файл, проблема была устранена. Хотя я до сих пор не совсем уверен, почему.

0 голосов
/ 06 апреля 2010

Я должен подчеркнуть, что раньше я не использовал эту библиотеку. Однако, глядя на трассировку стека, метод, который выдает исключение, принимает объект GraphicsDevice. Я предполагаю, что этот объект происходит от свойства GraphicDevice вашего объекта "graphics". Попробуйте проверить, что это свойство содержит то, что вы ожидаете, прежде чем передавать его конструктору FormCollection. Это может помочь направить вас в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...