奇怪的“对象引用未设置为对象的实例”涉及xWinForms

时间:2010-04-05 01:12:55

标签: c# xna

我一直在尝试使用我的C#XNA Game项目获取xWinForms 3.0库(xna中具有表单支持的库)但我仍然遇到同样的问题。 我添加对我的项目的引用,放入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和图形)          at GameSolution.Game2.LoadContent()在C:\ Users \ Owner \ Documents \ School \ Year 3 \ Winter \ Soen   390 \ TeamWTF_3 \ SourceCode \ GameSolution \ GameSolution \ Game2.cs:第45行          在Microsoft.Xna.Framework.Game.Initialize()          at GameSolution.Game2.Initialize()在C:\ Users \ Owner \ Documents \ School \ Year 3 \ Winter \ Soen   390 \ TeamWTF_3 \ SourceCode \ GameSolution \ GameSolution \ Game2.cs:第37行          在Microsoft.Xna.Framework.Game.Run()          at GameSolution.Program.Main(String [] args)在C:\ Users \ Owner \ 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 个答案:

答案 0 :(得分:1)

我终于弄清楚发生了什么...... 好像我需要某种配置文件。 当我使用3.1时,该库似乎适用于XNA 3.0 配置文件似乎在两者之间进行某种映射。一旦我添加了文件,它就解决了问题。我仍然不完全确定为什么。

答案 1 :(得分:0)

我应该强调我之前没有使用过这个库。但是,查看堆栈跟踪,抛出异常的方法需要一个GraphicsDevice对象。我猜这个对象来自你的“图形”对象的GraphicDevice属性。在将属性传递给FormCollection构造函数之前,请尝试检查该属性是否包含您所期望的内容。这可能有助于指明你正确的方向。