6

几天来我一直在与这个问题作斗争,通过网络浏览,但没有任何帮助我解决它:我正在 Visual Studio 2012 上创建一个 MonoGame 应用程序,但是在尝试加载纹理时,我遇到了以下问题:

无法加载菜单/btnPlay 资产!

我已经设置了内容目录: Content.RootDirectory = "Assets"; 文件 btnPlay.png 还设置了属性:构建操作:内容和复制到输出目录:如果更新,则复制。

我的构造函数和 LoadContent 函数完全是空的,但你自己看看:

public WizardGame()
{
    Window.Title = "Just another Wizard game";

    _graphics = new GraphicsDeviceManager(this);

    Content.RootDirectory = "Assets";
}

protected override void LoadContent()
{
    // Create a new SpriteBatch, which can be used to draw textures.
    _spriteBatch = new SpriteBatch(GraphicsDevice);

    Texture2D texture = Content.Load<Texture2D>("Menu/btnPlay");

    _graphics.IsFullScreen = true;
    _graphics.ApplyChanges();
}

我会很高兴有任何帮助!我对这个问题完全绝望了......

4

1 回答 1

6

在 VS2012、Windows 8 64 位和今天最新的 MonoGame (3.0.1) 下:

  • 创建一个名为Assets的子文件夹
  • 复制到输出设置为不复制以外的任何内容
  • 加载时将资源添加到纹理路径

在此处输入图像描述

namespace GameName2
{
    public class Game1 : Game
    {
        private Texture2D _texture2D;
        private GraphicsDeviceManager graphics;
        private SpriteBatch spriteBatch;

        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            _texture2D = Content.Load<Texture2D>("assets/snap0009");
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: Add your drawing code here
            spriteBatch.Begin();
            spriteBatch.Draw(_texture2D, Vector2.Zero, Color.White);
            spriteBatch.End();
            base.Draw(gameTime);
        }
    }
}

这是您绘制的纹理:D

在此处输入图像描述

笔记:

为方便起见,我保留了内容根目录指向的原始值 : Content

但是,您也可以直接Assets在路径中指定:

Content.RootDirectory = @"Content\Assets";

然后加载你的纹理而不预先添加Assets到它的路径:

_texture2D = Content.Load<Texture2D>("snap0009");
于 2013-11-10T18:54:29.933 回答