在 Monogame 中加载内容时出现 ArgumentNullException

Posted

技术标签:

【中文标题】在 Monogame 中加载内容时出现 ArgumentNullException【英文标题】:ArgumentNullException when loading content in Monogame 【发布时间】:2015-06-01 14:59:59 【问题描述】:

我不知道为什么我无法加载纹理,因为我的代码非常简单。

namespace Rogue_Like_LOL

    public class Game1 : Game
    
        GraphicsDeviceManager graphics;
        ScreenManager screenManager;

        public Game1()
            :base()
        

            graphics = new GraphicsDeviceManager(this);
            graphics.PreferredBackBufferHeight = 720;
            graphics.PreferredBackBufferWidth = 1280;
            Content.RootDirectory = "Content";

            Art.Load(Content);
        
    

还有 Art.cs:

    namespace Rogue_Like_LOL
    
        static class Art
        
            public static Texture2D Player  get; private set; 
            public static Texture2D PlayGame  get; private set; 
            public static Texture2D Exit  get; private set; 

            public static SpriteFont GameFont  get; private set; 

            public static void Load(ContentManager content)
            
                // Player etc
                PlayGame = content.Load<Texture2D>("playgame");
                Exit = content.Load<Texture2D>("exit");

            

    

以下是异常详情:

System.ArgumentNullException 未处理 HResult=-2147467261 Message=La valeur ne peut pas être null。 Nom du paramètre : 图形 设备不能为空 Source=MonoGame.Framework ParamName=Graphics 设备不能为空 StackTrace: à Microsoft.Xna.Framework.Graphics.Texture2D..ctor(GraphicsDevice graphicsDevice, Int32 width, Int32 height, Boolean mipmap, SurfaceFormat 格式,SurfaceType 类型,布尔共享,Int32 数组大小) à Microsoft.Xna.Framework.Graphics.Texture2D..ctor(GraphicsDevice graphicsDevice,Int32 宽度,Int32 高度) à Microsoft.Xna.Framework.Graphics.Texture2D.PlatformFromStream(GraphicsDevice graphicsDevice,流流) à Microsoft.Xna.Framework.Graphics.Texture2D.FromStream(GraphicsDevice graphicsDevice,流流) à Microsoft.Xna.Framework.Content.ContentManager.ReadRawAsset[T](字符串 资产名称,字符串原始资产名称) à Microsoft.Xna.Framework.Content.ContentManager.ReadAsset[T](String 资产名称,Action`1 记录DisposableObject) à Microsoft.Xna.Framework.Content.ContentManager.Load[T](String assetsName) à Rogue_Like_LOL.Art.Load(ContentManager content) dans c:\Users\Monique Dumont\Programmation\Rogue Like LOL\Rogue Like 大声笑\艺术经理\Art.cs:ligne 22 à Rogue_Like_LOL.Game1..ctor() dans c:\Users\Monique Dumont\Programmation\Rogue Like LOL\Rogue Like LOL\Game1.cs:ligne 34 à Rogue_Like_LOL.Program.Main() dans c:\Users\Monique Dumont\Programmation\Rogue Like LOL\Rogue Like LOL\Program.cs:ligne 17 à System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() à System.Threading.ThreadHelper.ThreadStart_Context(对象状态) à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 保留SyncCtx) à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean 保留SyncCtx) à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) à System.Threading.ThreadHelper.ThreadStart() InnerException:

感谢您的关注。

【问题讨论】:

您的纹理在“内容”中,对吗?不在任何子文件夹中? @DavorMlinaric 是的,当然,我还检查了 .png 是否在“始终复制”上。 内容应该在LoadContent(更合适)或Initialize Game1 的虚拟方法中通过覆盖其中任何一个来加载。请注意,在覆盖 Initialize 时,请确保调用 base.Initialize(),因为这实际上是在初始化基本游戏系统。 【参考方案1】:

我建议您在准备好使用内容管理器后加载您的内容。我不确定这是否能解决您的问题,但对我来说这似乎是一个可能的问题。

这样做:

protected override void LoadContent()

    Art.Load(Content);

【讨论】:

以上是关于在 Monogame 中加载内容时出现 ArgumentNullException的主要内容,如果未能解决你的问题,请参考以下文章

在 django 开发中加载静态文件时出现 404 错误

在新 viewController 中加载 UIWebView 时出现 HTTP 错误 -999

在 AsyncTack 中加载位图时出现问题

在颤动中加载 api 时出现类型转换错误

在设计器中加载表单时出现“找不到类型”错误

从包中加载 NIB 时出现异常