关于c#:MonoGame ContentManager类?

MonoGame ContentManager class?

我最近开始使用XNA进行c#编程,因为我已经知道不再支持XNA,所以我正过渡到MonoGame。话虽如此,当我尝试在程序中为Sprite类创建Load()方法时,我遇到了XNA所没有的MonoGame问题。我以前在XNA中执行此操作的方式如下:

1
2
3
4
public void Load(ContentManager content)
{
    content.Load<Texture2D>(AssetName);
}

现在,MonoGame存在的问题是我似乎无法在Sprite类中引用ContentManager。该类具有Game1类拥有的所有"使用Microsoft.Xna.Framework",并且代码中没有任何内容是静态的,因此我不明白为什么我不能引用ContentManager,因为在尝试将其放入时无法识别Load()。在MonoGame中有其他方法可以执行此操作,还是我没有正确引用它?


嗯,我没有立即看到此问题,但我会尽力提供帮助:

  • 您可能已经尝试过右键单击/解决,但是还是值得一提。

  • 请注意,在Monogame中加载内容与使用XNA不同。您必须使用内置管道工具并将内容传输到那里,不要忘记每次上传新纹理时都进行构建。

  • Content.RootDirectory是否没有更改?

请单挑一下以确保您已完成操作。希望这也会对您有所帮助。


假设您已经引用了MonoGame.Framework.dll或NuGet包,则该代码没有什么特别的。它看起来应该像这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;

namespace YourGameProject
{
    public class Sprite
    {
        public string AssetName { get; set; }

        public void Load(ContentManager content)
        {
            content.Load<Texture2D>(AssetName);
        }
    }
}

我只是在自己的项目中编写了该代码,然后进行了编译。如果对您不起作用,那么肯定有其他问题。