我正在 MonoGame 中使用 Open GL 制作 Space Invaders 游戏,我正在尝试加载已添加到 Content 文件夹中的纹理(这是一个名为“Invader”的 PNG 文件)
我使用的代码是:
invader = Content.Load<Texture2D>("Invader");
但是,当我尝试运行它时,它说:
ContentLoadException 未处理
无法将 Invader 作为非内容文件加载!
我正在尝试加载已添加到 Content 文件夹中的纹理(它是一个名为“Invader”的 PNG 文件)invader = Content.Load("Invader");
实际上,您可以像这样直接加载已添加到 Content 文件夹中的 PNG 内容:
invader = Content.Load<Texture2D>("Invader");
请注意,文件名在某些平台上区分大小写,因此请注意它完全匹配。此外,请确保您已在“属性”窗口中将文件设置为“内容/复制”(如果较新)。
另一种方法是使用XNA Game Studio Content Pipeline或MonoGame Content Pipeline将您的资产编译为优化的二进制 XNB 文件。这将为您提供更好的性能,但会带来额外的开发开销。
我还应该提到,当您将精灵渲染为原始 PNG 文件时,您应该在调用SpriteBatch.Begin时使用BlendState.NonPremultiplied以获得最佳效果。我在我的游戏中一直这样做有一段时间了,我对结果很满意。
MonoGame 没有完全实现内容管理器。通常,您单独构建内容,然后将构建的内容文件导入您的项目。然后你可以像往常一样加载它们。
要构建内容文件,您可以使用 XNA 或 MonoGame 内容构建器,例如这个。如果您愿意,您可以使用命令行作为项目构建过程的一部分,以便自动构建内容。
确保您的构建操作设置为相关 .png 的内容。通过右键单击文件并选择属性来执行此操作。