【问题标题】:.NET 4.0 + XNA 4.0 - Content.RootDirectory not working when given an absolute path?.NET 4.0 + XNA 4.0 - Content.RootDirectory 在给定绝对路径时不起作用?
【发布时间】:2011-12-22 04:35:56
【问题描述】:

我将如何使 Content.RootDirectory 成为绝对路径,以便我可以从 Content 以外的其他地方加载?

我不认为我应该这样做,因为这会给出不存在的错误:

Content.RootDirectory = "C:\\Users\\pc user\\Desktop\\";

outputFont = Content.Load<SpriteFont>("SpriteFont1");

SpriteFont1.spritefont 肯定存在于 C:\Users\pc user\Desktop 中。毫无疑问。

它是一个有效的 spritefont 文件,我刚刚将它从运行良好的 Content 移到了我的桌面上,它位于……呃……不是。

我确实需要能够做到这一点,但如果您实际上无法使用 Content.Load 从绝对路径加载 Texture2Ds 和 SpriteFonts 等,我愿意安装一个库或其他东西来做。

我希望我只是犯了一个“愚蠢的错误”并且它会起作用。

错误是:

ContentLoadException was unhandled

Error loading "SpriteFont1". File not found.

【问题讨论】:

  • 尝试此链接以获取有关如何开始使用的示例 ..msdn.microsoft.com/en-us/library/… 查找许多使用 C# 类型 C# Content.RootDirectory 进入 Google 搜索的示例

标签: c# .net .net-4.0 xna


【解决方案1】:

当 SpriteFont 和纹理在 Content 中运行良好时,为什么要将其移动到桌面?

而且我认为要移动 Content 的位置,您必须向后移动。

Content.RootDirectory = "Content\\..\\..";

而且不要忘记并非所有计算机都使用 C: 作为其主文件目录,除非这只是供您个人使用,那么您显然会这样做。

精灵字体是导入到您的内容项目中的。如果它现在在您的桌面上,它很可能不再被导入,至少在它所知道的地方没有。

这是一个类似问题的答案。图片链接不再有效,但答案可能会对您有所帮助。 https://gamedev.stackexchange.com/q/9748/11721

【讨论】:

  • 我正在制作一种开发游戏的方法,一个 XNA,我认为它被称为包装器,因此很遗憾不能使用 Content。 :(
【解决方案2】:

刚刚注意到 Texture2D.FromStream 方法。我将发布以供将来的读者欣赏:

public Stream stream;
Texture2D x;

stream = File.OpenRead("C:\\Users\\pc user\\Desktop\\faceGuy.png");
x = Texture2D.FromStream(GraphicsDevice, stream);

spriteBatch.Draw(x, new Rectangle(0, 0, 32, 32), Color.White);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多