我一直在尝试使用我的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);
}
}
非常感谢任何帮助._。
答案 0 :(得分:1)
我终于弄清楚发生了什么...... 好像我需要某种配置文件。 当我使用3.1时,该库似乎适用于XNA 3.0 配置文件似乎在两者之间进行某种映射。一旦我添加了文件,它就解决了问题。我仍然不完全确定为什么。
答案 1 :(得分:0)
我应该强调我之前没有使用过这个库。但是,查看堆栈跟踪,抛出异常的方法需要一个GraphicsDevice对象。我猜这个对象来自你的“图形”对象的GraphicDevice属性。在将属性传递给FormCollection构造函数之前,请尝试检查该属性是否包含您所期望的内容。这可能有助于指明你正确的方向。