Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';使用VS2012的Monogame无法获取要加载的内容_C#_Monogame - Fatal编程技术网

C# Can';使用VS2012的Monogame无法获取要加载的内容

C# Can';使用VS2012的Monogame无法获取要加载的内容,c#,monogame,C#,Monogame,我的代码是 新游戏字体(Content.Load(“LoadingFont”),“LoadingFont”) 根据我读到的内容,您必须使用VS2010将资产编译成.xnb格式(我已经这样做了),然后将它们放入bin目录中的Content子文件夹(我也已经这样做了)。但是,我得到一个错误,说“无法加载字体资源!” 我真的不知道还能做什么。我读过一篇很老的帖子,上面说使用XNA 4制作的资产不起作用,但我不知道这是否仍然是真的,也不知道如何将我的XNA版本更改为3.1 有什么想法吗?也许有更好的方法

我的代码是

新游戏字体(Content.Load(“LoadingFont”),“LoadingFont”)

根据我读到的内容,您必须使用VS2010将资产编译成.xnb格式(我已经这样做了),然后将它们放入bin目录中的Content子文件夹(我也已经这样做了)。但是,我得到一个错误,说“无法加载字体资源!”

我真的不知道还能做什么。我读过一篇很老的帖子,上面说使用XNA 4制作的资产不起作用,但我不知道这是否仍然是真的,也不知道如何将我的XNA版本更改为3.1


有什么想法吗?也许有更好的方法根本不使用VS2010?

是否已将内容添加到项目的内容文件夹中,并将生成操作设置为内容(在“属性”窗口中)

我不确定使用.xnb格式的资产的过程是什么。我知道可以这样做,但我通常只是直接将原始图像和声音文件添加到我的内容文件夹中。字体的可能有点棘手,但这样做

编辑:2015年

自从写下这个问题以来,很多事情都发生了变化。如今,MonoGame有自己的功能,可以将内容处理成XNB文件。首先要尝试的是使用新管道处理您的
SpriteFont
。这样可以避免完全依赖XNA

或者,在MonoGame中解决字体问题的另一种方法是使用该工具将它们预渲染到纹理,然后在游戏中使用该工具渲染它们

完成后,您可以像加载
SpriteFont
一样加载使用BMFont创建的字体,但可以使用
BitmapFont

_bitmapFont = Content.Load<BitmapFont>("my-font");

我有一个

像@craftworkgames,我不能给你一个完整的答案。但是XNA3.1附带的传统内容管道在4年内就消失了。因此,任何资产都需要以稍微不同的方式加载。例如,要加载.png资源以显示精灵,请执行以下操作:

rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png"));

并将.png文件正常添加到解决方案中。我很确定字体会有类似的效果,但我也还没有完全弄明白;)

我一直在VS2012中使用MonoGame,没有遇到任何问题
Content.Load(“myContent”)
仍然适用于我。最近有一件事让我很吃惊(提示:睡眠不足时不要编码),那就是你必须检查你的资源在解决方案资源管理器中是否设置为“复制到输出目录”,否则当游戏构建时,这些资源将不会与之匹配,这就是为什么你会出现错误-它无法加载没有的东西!右键单击资产并查看“属性”下的内容。如果它们设置为“不复制”,则您需要更改它。

我也有类似的问题,但目标平台是“Windows 8应用商店”。。。尽管Windows Open GL版本一切正常。 在Windows 8上,当我尝试content.load(“Fonts/TestFont”)时收到“无法作为非内容文件加载”

我用MonoGame.Windows8项目(我从CodePlex下载了源代码)替换了解决方案中的MonoGame DLL,并进行了一些调试。。。发现MonoGame在bin…\Debug\AppX文件夹中查找内容文件夹。。。在生成过程中,内容文件夹被复制到不同的位置。因此,当我手动将内容文件夹复制到AppX文件夹时,错误已经消失,我的游戏原型现在可以正常工作了

我想我可能错过了与AppX相关的项目首选项中的一些设置(可能Windows 8设备模拟器需要这个文件夹?),或者。。。MonoGame应该在不同的位置查找内容文件夹。。。无论如何,我现在将手动更新内容文件夹,因为它在编译过程中被复制到错误的位置

我的项目中有内容文件夹,并且生成操作设置正确(内容)。。。并且选择了“始终复制”,但在构建(兼容)过程中,内容文件夹被复制到调试文件夹,而应该复制到调试\AppX文件夹,否则MonoGame找不到它。 (我可能对确切路径有错误,因为我目前正在工作,问题出在我的家用电脑上)

也许这只是我的VisualStudio2012中的一些配置问题


希望这些信息有帮助。

我也遇到了同样的问题,不确定您是否解决了问题,但下面是我所做的

点击“内容”文件夹下的Monogame内容管道

添加您的spritefont或纹理

在Monogame内容管道中,确保将操作从“构建”更改为“复制”

然后当你想简单地加载内容时; 纹理=content.Load(“texture.png”)


希望这有帮助:)

您的目标平台是什么?Windows 7或更低版本、Windows 8等。最新版本的MonoGame正在实现XNA 4.0兼容性,因此您不想回到XNA 3.1。这几乎就是它。显然,他们在一个版本的Monogame中改变了如何做到这一点,从只需在/bin/content中变为实际必须在解决方案中。将其添加到解决方案中修复了:)将文件本身的“生成副本”属性设置为“更新时复制”,对我来说很有效。@ashes999我将链接更新为一个有效的链接。自2013年提出这个问题以来,情况发生了一些变化。@ashes999在我的辩护中,我更新了手机上的链接,多年来我都没有写过一个只有链接的答案。返回并更新我所有的旧答案将非常耗时,但我很乐意在它们出现时这样做。我已经为这个问题添加了更多细节,希望不会失去原始答案的上下文。@craftworkgames无需担心。你的答案(这里)在谷歌排名很高,而且你有很多代表,所以我认为这个具体案例会从更多细节中受益。干杯。在为Windows开发时,这一切都很好,但在其他平台(如Android、IOS、Win8)上不起作用。我只需要听到“提示:睡眠不足时不要编写代码”,然后我就明白了^^谢谢!
rock = Texture2D.FromStream(GraphicsDevice, TitleContainer.OpenStream(@"Rock-Large-Stones-PT.png"));