我最近使用XNA进入了c#,因为我读过不再支持XNA,所以我只是转向MonoGame。有了这个说我在MonoGame中遇到了一个问题,当我尝试在程序中为Sprite类创建一个Load()方法时,我没有使用XNA。我以前在XNA中使用的方法如下:
public void Load(ContentManager content)
{
content.Load<Texture2D>(AssetName);
}
现在我对MonoGame的问题是我似乎无法在我的Sprite类中引用ContentManager。该类具有我的Game1类所具有的所有'使用Microsoft.Xna.Framework',并且我的代码中没有任何内容是静态的,因此我不明白为什么我不能引用ContentManager,因为当我尝试将其放入时它无法识别Load()。在MonoGame中有不同的方法吗,或者我没有正确引用它?
答案 0 :(得分:1)
您可能已经尝试过右键单击/解决,但无论如何都值得说出来。
提醒您在Monogame中加载内容与使用XNA不同。您必须使用内置管道工具并在那里传输内容,不要忘记每次上传新纹理时都要构建它。
Content.RootDirectory没有变化?
只是进行一些改进,确保你已经做到了。希望这也会帮助你。
答案 1 :(得分:0)
假设您已引用MonoGame.Framework.dll
或NuGet包,那么代码没什么特别之处。看起来应该是这样的:
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);
}
}
}
我刚刚在我自己的项目中编写了该代码并进行了编译。如果它不适合你,那么肯定会出现其他问题。