3

我正在 MonoGame 中使用 Open GL 制作 Space Invaders 游戏,我正在尝试加载已添加到 Content 文件夹中的纹理(这是一个名为“Invader”的 PNG 文件)
我使用的代码是:

invader = Content.Load<Texture2D>("Invader");

但是,当我尝试运行它时,它说:

ContentLoadException 未处理
无法将 Invader 作为非内容文件加载!

4

3 回答 3

4

我正在尝试加载已添加到 Content 文件夹中的纹理(它是一个名为“Invader”的 PNG 文件)invader = Content.Load("Invader");

实际上,您可以像这样直接加载已添加到 Content 文件夹中的 PNG 内容:

invader = Content.Load<Texture2D>("Invader");

请注意,文件名在某些平台区分大小写,因此请注意它完全匹配。此外,请确保您已在“属性”窗口中将文件设置为“内容/复制”(如果较新)。

另一种方法是使用XNA Game Studio Content PipelineMonoGame Content Pipeline将您的资产编译为优化的二进制 XNB 文件。这将为您提供更好的性能,但会带来额外的开发开销。

我还应该提到,当您将精灵渲染为原始 PNG 文件时,您应该在调用SpriteBatch.Begin时使用BlendState.NonPremultiplied以获得最佳效果。我在我的游戏中一直这样做有一段时间了,我对结果很满意。

于 2013-07-31T00:08:05.920 回答
1

MonoGame 没有完全实现内容管理器。通常,您单独构建内容,然后将构建的内容文件导入您的项目。然后你可以像往常一样加载它们。

要构建内容文件,您可以使用 XNA 或 MonoGame 内容构建器,例如这个。如果您愿意,您可以使用命令行作为项目构建过程的一部分,以便自动构建内容。

于 2013-07-30T18:14:34.687 回答
1

确保您的构建操作设置为相关 .png 的内容。通过右键单击文件并选择属性来执行此操作。

于 2013-08-05T18:50:21.120 回答